банальное на пальцах. Понять просто...
Модули, в общем-то, представляют собой древовидную структуру и хорошо кладутся на файловую систему. Именуются файлы-модули по умолчанию без пробелов в формате snake_case.rs, тогда имя модуля будет snake_case, соответственно. Если есть папки - они становятся частью пути к модулям, например, utils/other/snake_case.rs будет иметь полный путь к модулю вида crate::utils::other::snake_case. Есть возможность указывать относительные пути, в том числе при импорте (use crate::utils даст возможность обращаться к сабмодулям через utils). Теперь сложная часть: для файлов зарезервированы специальные имена - main.rs/lib.rs в папке src или на верхнем уровне проекта (crate) и mod.rs в подпапках (имя модуля соответствует имени папки в данном случае); модули не добавляются в проект автоматически, сначала их нужно объявить при помощи синтаксиса mod filename; на уровень выше. Пример: src/ main.rs foo/ mod.rs bar.rs В main.rs: mod foo; В mod.rs: pub mod bar; Соответствующие модули: crate, crate::foo, crate::foo::bar И вместо src/foo/mod.rs возможно организовать файловую структуру как src/foo.rs рядом с src/foo/, роли не играет.
Обсуждают сегодня