Устройство doc-комментария
- Краткое резюме в одно предложение.
- Более подробное объяснение.
- Специальные разделы: примеры кода, паники, ошибки, предусловия безопасности.
// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0
/// Разбирает пару «ключ-значение» из строки.
///
/// Входная строка должна быть в формате `key=value`. Всё до первого
/// '=' считается ключом, а всё после --- значением.
///
/// # Examples
///
/// ```
/// use my_crate::parse_key_value;
/// let (key, value) = parse_key_value("lang=rust").unwrap();
/// assert_eq!(key, "lang");
/// assert_eq!(value, "rust");
/// ```
///
/// # Panics
///
/// Вызывает панику, если входная строка пуста.
///
/// # Errors
///
/// Возвращает `ParseError::Malformed`, если строка не содержит `=`.
///
/// # Safety
///
/// Вызывает неопределённое поведение, если...
unsafe fn parse_key_value(s: &str) -> Result<(String, String), ParseError>
enum ParseError {
Empty,
Malformed,
}
-
Идиоматичные doc-комментарии Rust следуют общепринятой структуре, которая облегчает их чтение разработчиками.
-
Первая строка doc-комментария — однопредложное резюме функции. Делайте её краткой.
rustdocи другие инструменты строго ожидают этого: её используют как краткое описание в документации модуля и в результатах поиска. -
Далее можно дать длинное, многоабзацное описание «зачем» и «что» делает функция. Используйте Markdown.
-
Наконец, можно использовать заголовки разделов верхнего уровня, чтобы организовать содержимое. В doc-комментариях обычно используются
# Examples,# Panics,# Errorsи# Safetyкак заголовки разделов. Сообщество Rust ожидает видеть в этих разделах описание релевантных аспектов вашего API. -
Rust сильно ориентирован на безопасность и корректность. Документирование поведения вашего кода в случае ошибок имеет решающее значение для написания надёжного ПО.
-
# Panics: если ваша функция может вызвать панику, вы должны задокументировать конкретные условия, при которых это может произойти. Вызывающему коду нужно знать, чего избегать.-
Вопрос: спросите класс, почему документирование паник так важно в языке, который предпочитает возвращать
Result. -
Ответ: паники предназначены для неисправимых ошибок программирования. Библиотека не должна паниковать, если только вызывающий код не нарушил контракт. Документирование этих контрактов необходимо.
-
-
# Errors: для функций, возвращающихResult, этот раздел объясняет, какие виды ошибок могут возникнуть и при каких обстоятельствах. Вызывающему коду эта информация нужна, чтобы писать надёжную логику обработки ошибок. -
Комментарии
# Safetyдокументируют предусловия безопасности для небезопасных функций, которые должны выполняться, иначе может возникнуть неопределённое поведение. Подробно они рассматриваются в углублённом курсе по небезопасному Rust.