我想使用许多相同的通用代码生成多个二进制文件。如果我用src/main.rs
编写所有内容,我可以简单地在pub(crate)
处标记项目并访问代码而无需导出它。但是,如果我将二进制文件放在src/bin/foo.rs
那么我找不到一种方法来访问它而不将所有内容标记为pub
。我不想标记所有内容,不仅因为我不希望其他人依赖它,还因为它使可见性检查无效。
我找到的唯一解决方法是将文件放在src
目录中,然后在bin/foo-bar.rs
中放置一个简单的填充程序,该填充程序仅调用my_crate::bin_foo_bar::main()
。这不是很整洁,需要一堆开销。
在你的包中,你可以定义一个lib crate和多个二进制crate。如果你在库箱内将一个类型声明为 pub(crate(,那么它显然不会从你的二进制箱子中看到。所以修改定义。包装不是板条箱,它是板条箱的包裹。pub(crate(类型仅在它们所属的crate内可见。