Где следует размещать источники, примеры, документацию, модульные тесты, интеграционные тесты, лицензию, тесты и т.д.?
Какова рекомендуемая структура каталогов для проекта Rust?
Ответ 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() {
}
}