我发现的所有示例都创建一个lib.rs
,然后在该文件中创建mod foo;
,mod bar;
对于每个文件foo.rs
,bar.rs
依此类推。
基本上我想要的是将我的 crate 拆分为多个文件,但不必为每个文件引入大量模块。这对 Rust 来说是不可能的吗?
我发现的所有示例都创建一个lib.rs
,然后在该文件中创建mod foo;
,mod bar;
对于每个文件foo.rs
,bar.rs
依此类推。
基本上我想要的是将我的 crate 拆分为多个文件,但不必为每个文件引入大量模块。这对 Rust 来说是不可能的吗?
为了包含另一个源文件,它必须是它自己的模块。
但是,这并不意味着您必须在 API 中公开这一事实。例如,假设您想将一些代码放在一个名为的文件中hidden.rs
:
pub fn inside_hidden() {}
现在在您的lib.rs
文件中,您可以公开此模块:
#![crate_type = "lib"]
pub mod hidden;
但是,如果您的库不需要子模块,最好将hidden
模块保密,并将其内容公开为顶级模块的成员:
#![crate_type = "lib"]
pub use hidden::inside_hidden;
mod hidden;
这样,用户就不会知道你有一个hidden
子模块。他们会认为inside_hidden
它是您的顶级模块的成员。