模組形成層次結構,使專案變得更容易理解。 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
範圍的位置。
模組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.rs
中。server/mod.rs
中。