rust - 为什么一个 Cargo 包只能有一个库目标?

标签 rust rust-cargo

According to its manual , cargo 包可以有多个可执行目标,但只允许有一个库目标。

A package can contain zero or one library crates and as many binary crates as you’d like. There must be at least one crate (either a library or a binary) in a package.

为什么限一个?原因和好处是什么?

最佳答案

Cargo 主要是一个包管理器。因此,包的主要作用是定义一个库。

当我们使用 crate 作为依赖项时,我们只在 Cargo.toml 中指定包名称。由于最多可以有一个库,Cargo 不需要您指定使用哪个库。如果允许在同一个包中定义多个库,那么我们需要指定一种方法来定义它们之间的依赖关系,因此我们有两种方法来声明依赖关系(外部包与内部包),使系统更复杂。

另一方面,添加一个不提供库的依赖是没有意义的,至少对于 Cargo 来说是这样,因为 Cargo 只关心那个上下文中的库目标。因此,没有理由将其他类型的目标(二进制文件、示例、测试等)限制为各一个。

关于rust - 为什么一个 Cargo 包只能有一个库目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843118/

相关文章:

graph - 结构中的可变向量

rust - 具有 &str 和生命周期的索引特征

rust - 如何在 Cargo.toml 中包含未发布的依赖项/库?

rust - 无法构建 Hyper - crate 名称中的无效字符 `-`

rust - `cargo package` : error: main function not found

rust - 实现用于复制的项目集合的最佳方法?

operator-overloading - 如何在Rust中实现惯用运算符重载值和引用?

rust - 如何将 "metadata"分配给特征?

rust - Cargo 是否将 semver 与 Git 标签一起使用?

rust - sdl2-sys 无法编译 - 无法执行链接器 : No such file or directory