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通過提供模組系統提供了靈活性。可以擁有每個模組的單獨檔,而不是放在同一個檔中,即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中。

上一篇: Rust模組 下一篇: Rust公開函數