Rust-如何将结构暴露在模块外?

Rust-如何将结构暴露在模块外?,rust,module,Rust,Module,这可能是一个非常愚蠢的问题,但我想知道是否有可能从模块中公开类型输出。如果这听起来含糊不清,我希望下面的信息将阐明我想要实现的目标 假设我有以下文件结构: Project |-Units | |-Length | | |-Meter.rs | | |-mod.rs | |-mod.rs |-main.rs 单位/mod.rs文件: pub mod Length; pub mod Meter; 单位/Length/mod.rs文件: pub mod Length; pub mod Mete

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

假设我有以下文件结构:

Project
|-Units
| |-Length
| | |-Meter.rs
| | |-mod.rs
| |-mod.rs
|-main.rs
单位/mod.rs文件:

pub mod Length;
pub mod Meter;
单位/Length/mod.rs文件:

pub mod Length;
pub mod Meter;
单位/长度/米.rs文件:

pub struct Meter
{
  someValue: f64
}

// some implementation here

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

let someMeter = Units::Length::Meter::Meter::new(5.3);
我想写的是

let someMeter = Units::Length::Meter::new(5.3);
虽然我不确定我应该在mod.rs文件中更改什么来实现这一点。我真的不想改变文件夹结构,因为我喜欢它的组织方式。如果能了解我做错了什么,我们将不胜感激


我承认在这个例子中我没有遵循锈迹命名约定。

好的,我想我已经明白了

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

mod meter;
pub use self::meter::Meter;

这个问题和答案是一个很好的例子,说明在你决定藐视公约之前,理解公约为什么存在是一个好主意。