Тема |
Описание |
Доп. |
|---|---|---|
Рекомендации
Хорошие комментарии к документу — это благо, которое помогает пользователям понимать код, который они используют; плохие комментарии к документу налагают бремя обслуживания и увеличивают вероятность путаницы у пользователей, когда они рассинхронизируются с кодом. Так как же отличить одно от другого? Не документируйте как этот кода работает, документируйте что он делает! Основной совет — избегать повторения в документации того, что ясно из кода и включите в документацию все, что неясно из кода |
||
Дополнительные crate для работы с документацией: crate cargo-deadlinks - проверяет документацию на наличие битых ссылок crate grammarly - проверка грамматики английского языка в документации crate cargo-readme - создает файл README из кода документации проекта crate doc-comment - макросы для условной документации |
||
rustdoc - для точечной генерации документации одного файла без Cargo cargo doc - для управления документацией всего проекта rustup doc - чтение локальной копии документации Rust |
rustdoc - для точечной генерации документации одного файла без Cargo. Парсит комментарии и генерирует HTML документацию.
cargo doc - для управления документацией всего проекта в директории
rustup doc - чтение локальной копии документации Rust
|
|
Уровни документирования |
Документирование на уровне модуля Так Добавив теги условной компиляции
Документирование на уровне метода
|
|
Примеры в документации можно тестировать и игнорировать. Игнорировать выполнение тестов в документации, заменив блок кода rust на text
Запустить проверку работоспособности примеров из документации:
|
||
Все специальные разделы
Для корректного отображения в HTML бэктика "`" (grave - символ обратной кавычки)
|
1. Examples - Примеры использования
2. Panics - Когда функция паникует
3. Errors - Возвращаемые ошибки
4. Safety - Для unsafe функций
5. Arguments - Описание параметров
6. Returns - Описание возвращаемого значения
7. Availability - Требования к фичам/версиям
8. Notes - Дополнительные заметки
9. Warning - Важные предупреждения
10. Deprecated - Устаревшие функции
11. See Also - Ссылки на related functionality
12. Implementation - Детали реализации
13. Performance - Характеристики производительности
|
|
Дополнительные возможности |
Скрытие кода в примерах с помощью символа hash/sharp - #
Условная документация с feature flags
Ссылки на другие элементы
Атрибут
Когда в документе отсутствует доступ к зависимости то можно добавить ссылку на результат поиска по документации
|
|
rust - Код компилируется и выполняется во время запуска команды: should_panic - Проверяет, что код паникует. Тест проходит если происходит panic. no_run - Код только компилируется, но не выполняется. ignore - Полностью игнорирует блок кода в тестах (не компилируется и не запускается). text - Обрабатывается как обычный текст, не как код. edition2015, edition2018, edition2021, edition2025 - Специфичные редакции compile_fail - используется для примеров кода, которые должны не скомпилироваться. Пример с should_panic, код запускается и должен вызвать panic:
Пример с ignore когда тестирование занимает много времени:
Пример с no_run при наличии внешних зависимостей (интеграционное тестирование):
Пример с compile_fail, если мы хотим показать ошибочный пример — нужно явно сказать, что этот код должен не компилироваться. Документация показывает пример неправильного кода. При сборке документации cargo test проверяет, что этот код реально не компилируется. Если ошибка вдруг исчезнет (например, после изменения компилятора) — тест упадёт, и автор заметит.
|
||
Атрибут Если вы делаете Чтобы не засорять свою документацию гигантскими вставками из чужих библиотек можно добавить Атрибут
Атрибут
Атрибут
Атрибут В файле ../docs/network_module.md:
В файле lib.rs:
Атрибут |
||
Автоматизация через Makefile поместить документацию в |
File Makefile:
|
|
Включить файл в документацию |
Чтобы не загромождать код объёмной документацией, можно вынести ее в файл и подключить
Для модуля: Синтаксис для помещения документации модуля Rust в отдельные файлы Markdown:
В старых компиляторах nightly от 1.50.0-nightly до 1.53.0-nightly, для того, чтобы вышеперечисленное было доступно, требуется нестабильная функция.
В ночных компиляторах от 1.24.0-nightly до 1.53.0-nightly доступен следующий альтернативный синтаксис, но с тех пор он был удален.
|
|
Swagger документирование APISwagger (теперь известный как OpenAPI) — это инструмент для автоматической генерации документации REST API из аннотаций в коде. Основной крейт для Swagger: crate utoipa После генерации вы получаете:
Из OpenAPI спецификации можно генерировать:
Что вы получаете:
|
Автогенерация документации API
Валидация запросов и ответов
Пример с Actix-web File Cargo.toml:
|
|
|
||