Rust 专题
您的位置:rust > Rust专题 > Rust文件系统
Rust文件系统
作者:--    发布时间:2019-11-20

模块形成层次结构,使项目变得更容易理解。 rust模块系统用于分割多个文件,使得并非所有内容都位于src/lib.rssrc/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.  
       }  
  }    
}

在上面的例子中,程序由三个模块组成,即abccb模块的内部模块。

给定文件的模块层次结构是:

如果模块包含许多函数并且函数非常冗长,则很难找到特定函数的代码。 rust通过提供模块系统提供了灵活性。可以拥有每个模块的单独文件,而不是放在同一个文件中,即src/lib.rs

要遵循的步骤:
首先,用分号替换模块a

mod a;  
mod b  
{  
     fn b()  
     {  
            // block of statements.    
     }  
     mod c  
    {  
       fn c()  
       {  
             // block of statements.  
       }  
     }    
}

分号;表示rust找到模块a的定义到另一个定义模块a范围的位置。

模块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.rssrc/lib.rs不同。 因此,src/b.rs将被移动到一个新目录并重命名为src/b/mod.rs,然后将子模块移动到新的b目录中。

模块文件系统规则:

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

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册