檔案系統階層

如果您省略模組內容,系統會指示 Rust 在其他檔案中尋找該內容:

mod garden;

這會讓 Rust 知道 garden 模組內容是在 src/garden.rs 中找到的。同樣地,garden::vegetables 模組可在 src/garden/vegetables.rs 中找到。

crate 根層級位於:

  • src/lib.rs (適用於程式庫 Crate)
  • src/main.rs (適用於二進位檔 Crate)

您也可以使用 "inner doc comments" 記錄檔案中定義的模組。這些會記錄包含它們的項目,在本例中就是模組。

//! This module implements the garden, including a highly performant germination
//! implementation.

// Re-export types from this module.
pub use garden::Garden;
pub use seeds::SeedPacket;

/// Sow the given seed packets.
pub fn sow(seeds: Vec<SeedPacket>) {
    todo!()
}

/// Harvest the produce in the garden that is ready.
pub fn harvest(garden: &mut Garden) {
    todo!()
}
This slide should take about 5 minutes.
  • 在 Rust 2018 之前,模組需位於 module/mod.rs 而非 module.rs 中,這仍然是 2018 後續版本的可行替代方案。

  • 導入 filename.rs 做為 filename/mod.rs 的替代方案,主要是因為許多名為 mod.rs 的檔案在 IDE 中很難區分。

  • 更深層的巢狀結構可以使用資料夾,即使主要模組為檔案也一樣:

    src/
    ├── main.rs
    ├── top_module.rs
    └── top_module/
        └── sub_module.rs
    
  • Rust 尋找模組的位置可透過編譯器指令變更:

    #[path = "some/path.rs"]
    mod some_module;

    舉例來說,如果您想將模組的測試放在名為 some_module_test.rs 的檔案中 (類似 Go 中的慣例),這就會很實用。