文件系统2025年3月17日 | 阅读 3 分钟 模块形成一个层次结构,使项目更易于理解。 Rust 模块系统用于以某种方式分割多个文件,使并非所有内容都位于 src/lib.rs 或 src/main.rs 文件中。 文件名: src/lib.rs 在上面的例子中,一个程序由三个模块组成,即 A、B 和 C。C 是 B 模块的内部模块。 给定文件的模块层次结构是 ![]() 如果模块包含许多函数,并且函数非常冗长,那么找到特定函数的代码就会变得困难。 Rust 通过提供模块系统提供了灵活性。 我们可以为每个模块创建一个单独的文件,而不是放在同一个文件,即 src/lib.rs 中。 要遵循的步骤首先,用分号替换模块 'A' 的代码块。 分号 ; 告诉 Rust 在另一个位置查找模块 'A' 的定义,该定义定义了模块 'A' 的范围。
现在创建包含模块 A 定义的外部文件。 外部文件的名称将命名为 src/A.rs。 创建文件后,在该文件中编写模块 A 的定义,该定义先前已被删除。 文件名: src/A.rs。 在这种情况下,我们不需要编写 mod 声明,正如我们在 src/lib.rs 文件中提到的那样。 并且,如果我们在那里编写 mod 声明,那么它将成为模块 A 的子模块。 Rust 默认情况下会查找 src/lib.rs 文件,然后此文件确定要进一步查找哪个文件。 现在,我们将从文件 src/lib.rs 中提取模块 B,并用分号替换模块 B 的主体。 文件名: src/lib.rs
现在创建包含模块 B 定义的外部文件。 外部文件的名称将命名为 src/B.rs。 创建文件后,在该文件中编写模块 B 的定义,该定义先前已被删除。 文件名: src/B.rs 现在我们将从文件 src/B.rs 中提取模块 C,并用分号替换模块 C 的主体。
现在创建包含模块 C 定义的外部文件。 外部文件的名称将命名为 src/C.rs。 创建文件后,在该文件中编写模块 C 的定义,该定义先前已被删除。 文件名: src/C.rs 注意:从模块 B 中提取模块 C 将导致编译错误,因为 src/B.rs 与 src/lib.rs 不同。 因此,需要将 src/B.rs 移动到一个新目录中,并重命名为 src/B/mod.rs,然后将子模块移到新的 'B' 目录中。模块文件系统规则
下一话题使用 pub 控制可见性 |
我们请求您订阅我们的新闻通讯以获取最新更新。