Ієрархія файлової системи
Пропущення вмісту модуля призведе до того, що Rust шукатиме його в іншому файлі:
mod garden;
Це повідомляє Rust, що вміст модуля garden
знаходиться в src/garden.rs
. Так само модуль garden::vegetables
можна знайти на src/garden/vegetables.rs
.
Корінь crate
знаходиться в:
src/lib.rs
(для крейта бібліотеки)src/main.rs
(для крейта виконуваного файлу)
Модулі, визначені у файлах, також можна документувати за допомогою "внутрішніх коментарів документа". Вони документують елемент, який їх містить – у цьому випадку це модуль.
//! Цей модуль реалізує сад, включаючи високоефективну реалізацію //! пророщування. // Ре-експорт типів з цього модуля. pub use garden::Garden; pub use seeds::SeedPacket; /// Посіяти задані пакети насіння. pub fn sow(seeds: Vec<SeedPacket>) { todo!() } /// Збір врожаю в саду, який вже готовий. pub fn harvest(garden: &mut Garden) { todo!() }
-
До 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.