Rust文件系統

模塊形成層次結構,使項目變得更容易理解。 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文件系統

如果模塊包含許多函數並且函數非常冗長,則很難找到特定函數的代碼。 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中。