Rust文件系統
模塊形成層次結構,使項目變得更容易理解。 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」且沒有子模塊,則模塊的所有聲明都可以放在文件
server.rs
中。 - 如果名爲「server」的模塊包含子模塊,則模塊的所有聲明都將放在文件
server/mod.rs
中。