我可以将Crate分成多个文件而不引入每个文件的模块吗?

8
我找到的所有示例都是创建一个lib.rs,然后在该文件内为每个文件foo.rsbar.rs等创建mod foo;mod bar;等模块。
基本上,我想要将我的crate拆分成多个文件,但不想为每个文件引入大量的模块。这在Rust中不可能吗?

你可以拥有单独的子模块,并在你想要导出的模块中使用 pub use - Arjan
1个回答

12
为了包含另一个源文件,它必须是自己的模块。
但是,这并不意味着你必须在你的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,就像它是您顶级模块的成员一样。


一如既往的好答案 :) 谢谢! - Christoph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接