所以我想在lib.rs
中定义一些模块,但不将它们公开,而只在项目中使用。
在我的lib.rs
中,如果我有这样的定义:
pub mod args;
在我的main.rs
中,我可以这样使用args
模块:
use my_lib::args::Cli;
其中my_lib
在Cargo.tml
中定义为
[lib]
name = "my_lib"
path = "src/lib.rs"
但我不想要pub mod args;
。我尝试更改为pub(crate) mod args;
,但这导致无法找到args
模块的编译错误。
如何使lib.rs
中定义的args
这样的模块可用,而不必给予它最宽松的可见性?
1条答案
按热度按时间dw1jzc5e1#
由于Rust将库
lib.rs
和二进制main.rs
分离到单独的板条箱中,因此没有简单的方法来从main.rs
中包含lib.rs
中的内容,而不是pub
中的内容。我建议你按照大箱子的方式(我想到了
serde
),添加一个pub mod __private;
来表达这个意思。你可以另外用#[doc(hidden)]
注解它,把它从文档中隐藏起来,使它更加明显。