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

时间:2014-06-05 22:01:36

标签: module namespaces rust rust-crates

我找到的所有示例都会创建lib.rs,然后在该文件中为每个文件mod foo;mod bar;创建foo.rsbar.rs,依此类推。

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

1 个答案:

答案 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,就好像它是您的顶级模块的成员一样。