为什么货运包裹只能有一个库目标?

Eon*_*nil 8 rust rust-cargo

根据其手册,Cargo软件包可以具有多个可执行目标,但只允许一个库目标。

一个包可以包含零个或一个库箱,也可以包含任意数量的二进制箱。包中必须至少有一个板条箱(库或二进制文件)。

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

Fra*_*gné 6

货物主要是包裹经理。因此,包的主要作用是定义一个库。

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

另一方面,添加不提供库的依赖项是没有意义的,至少对于Cargo而言是没有意义的,因为Cargo只在那种情况下关心库目标。因此,没有理由将其他类型的目标(二进制,示例,测试等)限制为一个。