我可以在多个文件中拆分包,而不为每个文件引入模块吗?

Chr*_*oph 7 namespaces module rust rust-crates

所有的例子,我发现创建一个lib.rs,然后将该文件中创建mod foo;,mod bar;为每个文件foo.rs,bar.rs等等.

基本上我想要的是将我的箱子分成多个文件,但不必为每个文件引入大量模块.Rust不可能做到这一点吗?

Bur*_*hi5 10

为了包含另一个源文件,它必须是它自己的模块.

但是,这并不意味着您必须在API中公开此事实.例如,假设您想将一些代码放在一个名为的文件中hidden.rs:

pub fn inside_hidden() {}
Run Code Online (Sandbox Code Playgroud)

现在在您的lib.rs文件中,您可以公开此模块:

#![crate_type = "lib"]

pub mod hidden;
Run Code Online (Sandbox Code Playgroud)

但是,如果您的库不需要子模块,那么最好保密hidden模块,而是将其内容作为顶级模块的成员公开:

#![crate_type = "lib"]

pub use hidden::inside_hidden;

mod hidden;
Run Code Online (Sandbox Code Playgroud)

这样,用户就不会知道你有一个hidden子模块.他们会看到inside_hidden它是您的顶级模块的成员.