Rust - 如何从模块中公开结构?

One*_*All 8 module rust

这可能是一个非常愚蠢的问题,但我想知道是否可以从模块中公开类型。如果这听起来很模糊,我希望以下信息能够阐明我想要实现的目标。

假设我有以下文件结构:

Project
|-Units
| |-Length
| | |-Meter.rs
| | |-mod.rs
| |-mod.rs
|-main.rs
Run Code Online (Sandbox Code Playgroud)

Units/mod.rs 文件:

pub mod Length;
Run Code Online (Sandbox Code Playgroud)

单位/长度/mod.rs 文件:

pub mod Meter;
Run Code Online (Sandbox Code Playgroud)

单位/长度/Meter.rs 文件:

pub struct Meter
{
  someValue: f64
}

// some implementation here

Run Code Online (Sandbox Code Playgroud)

现在,当我想在 main 中使用 Meter 结构时,我似乎需要编写以下内容:

let someMeter = Units::Length::Meter::Meter::new(5.3);
Run Code Online (Sandbox Code Playgroud)

我想写的是

let someMeter = Units::Length::Meter::new(5.3);
Run Code Online (Sandbox Code Playgroud)

尽管我不确定应该在 mod.rs 文件中更改什么才能实现此目的。我真的不想更改文件夹结构,因为我喜欢它的组织方式。任何对我做错了什么的洞察将不胜感激。

我承认在此示例中我没有遵循 Rust 命名约定。

One*_*All 8

好吧,我想我明白了。

首先,我必须更改命名约定,以免模块和结构(Meter 模块和 Meter 结构)之间产生冲突。然后我必须将units/length/mod.rs 文件更改为:

mod meter;
pub use self::meter::Meter;
Run Code Online (Sandbox Code Playgroud)