将结构移至单独的文件中而不拆分为单独的模块?

2024-03-13

我有这个文件层次结构:

main.rs
protocol/
protocol/mod.rs
protocol/struct.rs

In struct.rs:

pub struct Struct {
    members: i8
}

impl Struct {
    pub fn new() -> Struct {
        Struct { 4 }
    }
}

我如何访问它:

mod protocol;
protocol::Struct::new();
// As opposed to:
// protocol::struct::Struct::new();

我尝试过各种组合pub use and mod但不可否认,我是在盲目地探究事物。

是否可以拆分一个结构(并且它是impl)到一个单独的文件而无需创建新的模组?


简短的回答:使用pub use Type在你的mod.rs。完整的示例如下:

我的结构:

src/
├── main.rs
├── protocol
│   └── thing.rs
└── protocol.rs

main.rs

mod protocol;

fn main() {
    let a = protocol::Thing::new();
    println!("Hello, {:?}", a);
}

协议.rs

pub use self::thing::Thing;
mod thing;

协议/thing.rs

#[derive(Debug)]
pub struct Thing(i8);

impl Thing {
    pub fn new() -> Thing { Thing(4) }
}

作为一项管理工作,不要将文件与语言关键字称为相同的东西。struct导致编译问题,所以我重命名了它。另外,您的结构创建语法不正确,因此我为此示例选择了较短的版本^_^。

并回答您标题中提出的问题:在不使用深奥功能的情况下,文件总是会创建一个新模块 - 您can't将某些内容放入不同的文件中,而不将其放入不同的模块中。您可以重新导出该类型,这样它看起来就不再是原来的样子了。

进一步解释:mod关键字告诉编译器查找该名称的文件并将其作为模块从当前文件中引用。例如,mod protocol;将寻找一个文件protocol.rs并表现得好像它已包含其内容,类似于:

mod protocol {
    // ... contents here
};

See Rust 实例 https://doc.rust-lang.org/rust-by-example/mod/split.html更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将结构移至单独的文件中而不拆分为单独的模块? 的相关文章

随机推荐

  • Azure Cosmos 分页:FeedResponse.ContinuationToken 在下一个请求中不起作用

    下面是我在 Azure Cosmos 中进行分页的代码 在该函数中 我返回 FeedResponse 的 ContinuationToken 获取第一页的第一个请求很好 它返回继续令牌 但是 如果我在下一个请求中使用该令牌 则 API 将返
  • delphi程序中的隐藏主菜单,使用Alt键自动显示

    首先 我要说的是 我讨厌Windows Vista和Windows 7中的这个功能 其次 我想做它 Here https stackoverflow com questions 1218394 how can i toggle the ma
  • TypeScript 和 RegExp

    打字稿 说 该物业 1 类型值不存在 pattern string flags string RegExp new pattern string flags string RegExp 该类型可以通过查看定义来解释lib d ts附带的打字
  • 除了IEEE754之外还有其他常用的浮点格式吗?

    我正在编写一个编组层来自动转换不同域之间的值 当涉及浮点值时 这可能意味着将值从一种浮点格式转换为另一种浮点格式 然而 似乎几乎每个现代系统都在使用 IEEE754 所以我想知道是否真的值得推广以允许其他格式 或者只是管理不同 IEEE75
  • 形式中的形式。表单控件可以继承吗?

    我有两个组件 ParentComponent 和 ChildComponent 父组件 ts
  • UiAutomator -- 将小部件添加到主屏幕

    我对 Google 的 uiautomator 有相当多的经验 然而 当谈到向手机主屏幕添加小部件时 我似乎被难住了 现在让我们保持简单并假设要添加小部件的屏幕是空的 思考过程是打开应用程序抽屉 gt 单击小部件选项卡 gt 找到要添加的小
  • 背景图像的全宽和全高

    我正在为一个网站设置横幅 横幅由图像和其顶部的一些文本组成 代码如下 div class banner div p class banner text Line 1Line 2 p div 我需要的是图像覆盖屏幕的整个宽度 即使屏幕比图像宽
  • Web 应用程序架构:1 个或 n 个 API

    背景 我正在考虑网络应用程序组织 我将前端 浏览器网站 与后端 API 分开 2 个应用程序 2 个存储库 2 个托管 Front 几乎会调用 API 来完成所有事情 因此 如果我的 API 有两个独立的域服务 例如 学习上下文和预订上下文
  • group by 之后的拉丁猪袋到元组

    我有以下带有架构的数据 t0 chararray t1 int t2 int B 4 2 A 2 3 A 3 2 B 2 2 A 1 2 B 1 2 我想生成以下结果 按 t0 分组 并按 t1 排序 A 1 2 2 3 3 2 B 1 2
  • 文件上传 ['ERROR']= 2 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我不断收到
  • 获取字符串中的第一个单词[重复]

    这个问题在这里已经有答案了 我想从向量中提取第一个字符串 例如 y lt c london hilss newyork hills paris jjk 我想获取符号 之前的字符串 即 location london newyork pari
  • 设置Android布局元素的背景颜色

    我正在尝试在某种程度上克隆活动的设计 然而 我在一项非常简单的任务上遇到了问题 我已经创建了如图所示的布局 标题是TextView in a RelativeLayout 现在我想改变背景颜色RelativeLayout 但我似乎无法弄清楚
  • 如何更改 xib 中的占位符文本颜色?

    如何更改 xib 中的占位符文本颜色 我已经尝试过关键路径的事情 但它给了我 NSException 任何人都可以帮忙吗 修改占位符文本颜色的最简单方法是通过 Xcode Storyboard 界面生成器 选择感兴趣的 UITextFiel
  • 为什么匿名类不能有 lambda 属性,但可以有 Func<> 属性? [复制]

    这个问题在这里已经有答案了 我正在尝试了解 C 对匿名类型的限制 考虑以下代码 var myAwesomeObject new fn1 new Func
  • 如何创建由两种颜色并排组成的android可绘制对象?

    使用 XML 是否可以创建一个可绘制对象 其中一半为 color1 另一半为 color2 当我将该可绘制对象设置为视图的背景时 它应该如下图所示 通过xml来做
  • 有什么办法可以配置Struts绑定null而不是空字符串吗?

    当用户决定将表单中的字段保留为空时 Apache Struts 会绑定为空String作为属性的值ActionForm 有什么方法可以全局修改行为并选择null而不是空的String 我知道 Spring MVC 的做法完全相同 但还有字符
  • PhoneGap 相机在捕获图像后无法确认

    我正在制作一个应用程序来测试 PhoneGap 的功能 以便稍后我可以将其用于更大的项目 我试图通过构建一个简单的测试应用程序来让相机 API 正常工作 该应用程序仅捕获并显示图像 奇怪的是 当我按下捕获按钮时会触发navigate cam
  • Scala 中的高效字符串连接

    JVM 通过以下方式优化字符串连接 并将其替换为StringBuilder 这在 Scala 中应该是一样的 但是如果字符串连接起来会发生什么 var x x x y x z 据我所知 该方法将字符串视为字符序列 因此即使 JVM 可以创建
  • 如何声明基于泛型类型的指针?

    我有一堂这样的课 type A class procedure
  • 将结构移至单独的文件中而不拆分为单独的模块?

    我有这个文件层次结构 main rs protocol protocol mod rs protocol struct rs In struct rs pub struct Struct members i8 impl Struct pub