如何使某个项目在我的二进制板条箱目标中可见,但在任何其他板条箱中不可见?

问题描述 投票:0回答:1

我想使用大量相同的通用代码生成多个二进制文件。如果我在

src/main.rs
中编写所有内容,我可以简单地在
pub(crate)
处标记项目并访问代码而不导出它。但是,如果我将二进制文件放入
src/bin/foo.rs
中,那么我无法找到一种方法来访问它而不标记所有内容
pub
。我不想将所有内容都标记为 pub,不仅因为我不希望其他人依赖它,还因为它会使可见性检查无效。

我发现的唯一解决方法是将文件放入

src
目录中,然后在
bin/foo-bar.rs
中放置一个简单的填充程序,仅调用
my_crate::bin_foo_bar::main()
。这不是很整洁并且需要大量开销。

rust visibility rust-cargo
1个回答
1
投票

在你的包中,你可以定义一个 lib crate 和多个二进制 crate。如果您将库板条箱内的类型声明为 pub(crate) ,那么它显然从您的二进制板条箱中不可见。因此修改定义。包裹不是板条箱,而是板条箱的包裹。并且 pub(crate) 类型仅在它们所属的板条箱内可见。

© www.soinside.com 2019 - 2024. All rights reserved.