سلسله‌ مراتب فایل‌سیستم

حذف محتوای ماژول به Rust می‌گوید که آن را در فایل دیگری جستجو کند:

mod garden;

این به rust می‌گوید که محتوای ماژول garden درsrc/garden.rsیافت می‌شود. به طور مشابه، ماژول garden::vegetables را می‌توان در src/garden/vegetables.rs یافت.

ریشهcrate در:

  • src/lib.rs (for a library crate)
  • src/main.rs (for a binary crate)

ماژول‌های تعریف‌شده در فایل‌ها را نیز می‌توان با استفاده از «کامنت‌های مستند داخلی» مستند کرد. اینها موردی را که حاوی آنها است - در این مورد، یک ماژول مستند می‌کنند.

//! 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.rs در module/mod.rs قرار می‌گرفتند و این هنوز یک جایگزین کارآمد برای نسخه‌های بعد از 2018 است.

  • دلیل اصلی معرفی filename.rs به‌عنوان جایگزین filename/mod.rs این بود که تشخیص بسیاری از فایل‌ها با نام mod.rs در IDE‌ها دشوار است.

  • لانه‌گزینی(nesting) عمیق‌تر می‌تواند از folderها استفاده کند، حتی اگر ماژول اصلی یک فایل باشد:

    src/
    ├── main.rs
    ├── top_module.rs
    └── top_module/
        └── sub_module.rs
    
  • مکانی که rust به دنبال ماژول‌ها می‌گردد را می‌توان با دستور کامپایلر تغییر داد:

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

    برای مثال، اگر می‌خواهید تست‌هایی را برای یک ماژول در فایلی به نام some_module_test.rs قرار دهید، مفید است، شبیه به قرارداد (convention) در Go.