سلسله مراتب فایلسیستم
حذف محتوای ماژول به 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!() }
-
قبل از 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.