【问题标题】:Rust - How to expose struct out of module?Rust - 如何从模块中暴露结构?
【发布时间】:2021-04-01 13:31:22
【问题描述】:

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

假设我有以下文件结构:

Project
|-Units
| |-Length
| | |-Meter.rs
| | |-mod.rs
| |-mod.rs
|-main.rs

Units/mod.rs 文件:

pub mod Length;

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

pub mod Meter;

Units/Length/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 文件中更改什么来实现这一点。我真的不想更改文件夹结构,因为我喜欢它的组织方式。任何对我做错了什么的见解将不胜感激。

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

【问题讨论】:

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

标签: rust module


【解决方案1】:

好的,我想我想通了。

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

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

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多