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/