根据其手册,Cargo软件包可以具有多个可执行目标,但只允许一个库目标。
一个包可以包含零个或一个库箱,也可以包含任意数量的二进制箱。包中必须至少有一个板条箱(库或二进制文件)。
为什么只限于一个?原因和好处是什么?
货物主要是包裹经理。因此,包的主要作用是定义一个库。
当使用板条箱作为依赖项时,我们仅在中指定包名称Cargo.toml。由于最多可以有一个库,因此Cargo不需要您指定要使用哪个库。如果允许在同一个程序包中定义多个库,那么我们需要指定一种方法来定义它们之间的依赖关系,因此您将有两种方法来声明依赖关系(外部程序包与内部包装),从而使系统更复杂。
另一方面,添加不提供库的依赖项是没有意义的,至少对于Cargo而言是没有意义的,因为Cargo只在那种情况下关心库目标。因此,没有理由将其他类型的目标(二进制,示例,测试等)限制为一个。