📜  Rust模块文件系统

📅  最后修改于: 2021-01-08 13:45:36             🧑  作者: Mango

文件系统

模块形成了层次结构,因此项目变得更加易于理解。 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通过提供模块系统来提供灵活性。我们可以为每个模块有一个单独的文件,而不是放在同一文件中,即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的定义,该定义先前已删除。

文件名:src / C.rs

 fn c()
       {
             // block of statements.
       }

注意:从模块B提取模块C会导致编译错误,因为src / B.rs与src / lib.rs不同。因此,将src / B.rs移至新目录并重命名为src / B / mod.rs,然后将子模块移至新的“ B”目录。

模块文件系统规则:

  • 如果模块名为“ server”并且没有子模块,则该模块的所有声明都可以放置在文件server.rs中。
  • 如果名为“ server”的模块包含子模块,则该模块的所有声明都将放置在文件server / mod.rs中。