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