Ответ 1
Cargo, официальный менеджер пакетов для Rust, определяет некоторые соглашения относительно компоновки ящика Rust:
. ├── Cargo.lock ├── Cargo.toml ├── benches │ └── large-input.rs ├── examples │ └── simple.rs ├── src │ ├── bin │ │ └── another_executable.rs │ ├── lib.rs │ └── main.rs └── tests └── some-integration-tests.rs
Cargo.toml
иCargo.lock
сохраняются в корне вашего проекта.- Исходный код находится в каталоге
src
.- Файл библиотеки по умолчанию
src/lib.rs
.- Исполняемый файл по умолчанию -
src/main.rs
.- Другие исполняемые файлы могут быть помещены в
src/bin/*.rs
.- Тесты интеграции проходят в каталоге
tests
(модульные тесты идут в каждом тестируемом файле).- Примеры исполняемых файлов входят в каталог
examples
.- Тесты идут в каталоге
benches
.Более подробно это описано в описании манифеста .
Следуя этому стандарту, вы сможете использовать команды Cargo для создания, запуска и тестирования вашего проекта. Запустите cargo new
, чтобы настроить новый проект библиотеки или cargo new --bin
, чтобы настроить новый исполняемый проект.
Кроме того, документация для библиотек часто записывается в комментарии к документации (комментарии, начинающиеся с ///
перед любым элементом, или //!
для документирования родительского элемента). Кроме того, лицензия обычно помещается в корневой каталог.
Модульные тесты, как упоминалось выше, записываются в том же модуле, что и те функции, которые они тестируют. Обычно они помещаются во внутренний модуль. Это выглядит так (это то, что Cargo генерирует для новой библиотеки с cargo new
):
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
}
}