【发布时间】:2019-09-09 12:28:15
【问题描述】:
我想创建一个带有两个二进制 crate 和一个包含共享代码的库的 rust 包。我知道如何通过将二进制文件的源文件放在src/bin/ 子目录(例如src/bin/firstbin.rs 和src/bin/secondbin.rs)和库代码在src/ 或src/lib/ 中来为一个简单的程序执行此操作。
但是,如果二进制文件有大量不属于库的非共享代码,并且我想将它们的源代码拆分为多个文件,我不确定如何布置源文件。我正在考虑将src/bin/firstbin/ 用于仅属于第一个二进制文件的文件,将src/bin/secondbin/ 用于第二个二进制文件。但是,我不确定如何从firstbin.rs 和secondbin.rs 引用这些文件。
那么这是正确的方法吗?如果是,我该如何引用这些文件?如果不是,最好的布局是什么?
【问题讨论】:
-
只有一个包是强制性的吗?如果我是你,我会使用不同的板条箱。
-
我是 rust 新手,所以仍在寻找最佳方法。不过,将其拆分成多个包似乎有点过头了。代码密切相关,我希望它能够保持在一起。例如,我希望这一切都在一个 git 存储库中。显然,在一个包中存在多个二进制文件的一些期望 - 因此支持 src/bin 目录中的多个源文件 - 但如果它们只是单个文件,除非你有非常大的文件,否则这似乎非常有限。如果可能的话,我更喜欢将源文件保持在不超过 100 到 200 行的范围内。
-
您可以在一个项目中拥有多个 crate(包):github.com/amethyst/amethyst/blob/master/Cargo.toml#L79 IMO,当您的二进制文件的唯一功能是调用您的库时,将一个库和一个二进制文件混合在一个 crate 中很有用,当所有的工作都完成了。对于更复杂的项目,最好将其拆分到不同的 crate 中。
-
哇!这让我有点不知所措——我的 Cargo.toml 文件都少于 10 行!拆分成不同的 crate 是指不同的包吗?
-
如果您要购买多个板条箱,请查看工作区:doc.rust-lang.org/cargo/reference/…
标签: rust rust-cargo