Rust 模块文件系统解析和用法

模块形成了层次结构, 因此项目变得更加易于理解。 Rust模块系统用于拆分多个文件, 使得并非所有内容都位于src / lib.rs或src / main.rs文件中。
文件名:src / lib.rs

mod A{fn a(){// block of statements.}}mod B{fn b(){// block of statements.}mod C{fn c(){// block of statements.}}}

在以上示例中, 程序由三个模块组成, 即A, B和C。C是B模块的内部模块。
给定文件的模块层次结构为:
Rust 模块文件系统解析和用法

文章图片
如果模块包含许多功能并且这些功能非常冗长, 则很难找到特定功能的代码。 Rust通过提供模块系统来提供灵活性。我们可以为每个模块有一个单独的文件, 而不是放在同一个文件中, 即src / lib.rs。
应遵循的步骤 首先, 用分号替换模块” A” 的块。
mod A; mod B{fn b(){// block of statements.}mod C{fn c(){// block of statements.}}}

分号; 告诉Rust在定义模块” A” 范围的另一个位置找到模块” A” 的定义。
  • mod A; 好像:
mod A{fn a(){// block of statements.}}

现在, 创建包含模块A定义的外部文件。外部文件的名称将命名为src / A.rs。创建文件后, 在此文件中写入模块A的定义, 该定义先前已删除。
文件名:src / A.rs。
fn a(){// block of statements.}

在这种情况下, 我们不需要编写src / lib.rs文件中提到的mod声明。并且, 如果我们在此处编写mod声明, 则它将成为模块A的子模块。
Rust默认情况下会查看src / lib.rs文件, 然后此文件确定要进一步查找的文件。
现在, 我们将从文件src / lib.rs中提取模块B, 并用分号替换模块B的主体。
文件名:src / lib.rs
mod A; mod B;

  • mod B; 好像:
mod B{fn b(){// block of statements.}mod C{fn c(){// block of statements.}}}

现在, 创建包含模块B定义的外部文件。外部文件的名称将命名为src / B.rs。创建文件后, 在该文件中写入模块B的定义, 这些定义先前已删除。
文件名:src / B.rs
fn b(){// block of statements.}mod C{fn c(){// block of statements.}}

现在, 我们将从文件src / B.rs中提取模块C, 并用分号替换模块C的主体。
fn b(){// block of statements.}mod C;

  • mod C; 好像:
mod C{fn c(){// block of statements.}}

现在, 创建包含模块C定义的外部文件。外部文件的名称将命名为src / C.rs。创建文件后, 在此文件中写入模块C的定义, 该定义先前已删除。
【Rust 模块文件系统解析和用法】文件名:src / C.rs
fn c(){// block of statements.}

注意:因为src / B.rs与src / lib.rs不同, 所以从模块B中提取模块C会导致编译错误。因此, 将src / B.rs移至新目录并重命名为src / B / mod.rs, 然后将子模块移至新的” B” 目录。 模块文件系统规则:
  • 如果模块名为” server” 并且没有子模块, 则该模块的所有声明都可以放置在文件server.rs中。
  • 如果名为” server” 的模块包含子模块, 则该模块的所有声明都将放置在文件server / mod.rs中。

    推荐阅读