8

我发现的所有示例都创建一个lib.rs,然后在该文件中创建mod foo;mod bar;对于每个文件foo.rsbar.rs依此类推。

基本上我想要的是将我的 crate 拆分为多个文件,但不必为每个文件引入大量模块。这对 Rust 来说是不可能的吗?

4

1 回答 1

11

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

但是,这并不意味着您必须在 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它是您的顶级模块的成员。

于 2014-06-05T23:11:00.213 回答