我找到的所有示例都会创建lib.rs
,然后在该文件中为每个文件mod foo;
,mod bar;
创建foo.rs
,bar.rs
,依此类推。
基本上我想要的是将我的箱子分成多个文件,但不必为每个文件引入大量模块。 Rust不可能这样做吗?
答案 0 :(得分:10)
为了包含另一个源文件,它必须是它自己的模块。
但是,这并不意味着您必须在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
,就好像它是您的顶级模块的成员一样。