Szukaj…


Wprowadzenie

Kompilator Rust posiada kilka przydatnych funkcji, dzięki którym dokumentowanie projektu jest szybkie i łatwe. Możesz użyć wskazówek kompilatora do wymuszenia dokumentacji dla każdej funkcji i mieć wbudowane testy w swoich przykładach.

Składnia

  • /// Komentarz do dokumentacji zewnętrznej (dotyczy pozycji poniżej)

  • //! Komentarz do dokumentacji wewnętrznej (dotyczy załączonego elementu)

  • cargo doc # Generuje dokumentację dla tej skrzynki biblioteki.

  • cargo doc --open # Generuje dokumentację dla tej skrzynki biblioteki i otwartej przeglądarki.

  • cargo doc -p CRATE # Generuje dokumentację tylko dla określonej skrzynki.

  • cargo doc --no-deps # Generuje dokumentację dla tej biblioteki i nie ma zależności.

  • test ładunku # Przeprowadza testy jednostkowe i testy dokumentacji.

Uwagi

Ta sekcja „Rust Book” może zawierać przydatne informacje na temat dokumentacji i testów dokumentacji.

Komentarze do dokumentacji można zastosować do:

  • Moduły
  • Struktury
  • Enums
  • Metody
  • Funkcje
  • Metody cech i cech

Wskazówki dotyczące dokumentacji

Aby upewnić się, że wszystkie możliwe elementy są udokumentowane, możesz użyć łącza missing_docs aby otrzymać ostrzeżenia / błędy z kompilatora. Aby otrzymywać ostrzeżenia dla całej biblioteki, umieść ten atrybut w pliku lib.rs :

#![warn(missing_docs)]

Za pomocą tej wskazówki możesz również otrzymywać błędy dotyczące brakującej dokumentacji:

#![deny(missing_docs)]

Domyślnie missing_docs są dozwolone, ale możesz jawnie zezwolić na nie za pomocą tego atrybutu:

#![allow(missing_docs)]

Może to być przydatne, aby umieścić w jednym module, aby pozwolić na brakującą dokumentację dla jednego modułu, ale odrzuć to we wszystkich innych plikach.

Komentarze do dokumentacji

Rust udostępnia dwa typy komentarzy do dokumentacji: komentarze do dokumentacji wewnętrznej i komentarze do dokumentacji zewnętrznej. Przykłady każdego z nich podano poniżej.

Komentarze do wewnętrznej dokumentacji

mod foo {
    //! Inner documentation comments go *inside* an item (e.g. a module or a 
    //! struct). They use the comment syntax //! and must go at the top of the
    //! enclosing item. 
    struct Bar {
        pub baz: i64
        //! This is invalid. Inner comments must go at the top of the struct,
        //! and must not be placed after fields.
    }
}

Komentarze do dokumentacji zewnętrznej

/// Outer documentation comments go *outside* the item that they refer to.
/// They use the syntax /// to distinguish them from inner comments.
pub enum Test {
    Success,
    Fail(Error)
}

Konwencje

/// In documentation comments, you may use **Markdown**.
/// This includes `backticks` for code, *italics* and **bold**.
/// You can add headers in your documentation, like this:
/// # Notes
/// `Foo` is unsuitable for snafucating. Use `Bar` instead.
struct Foo {
    ...
}

/// It is considered good practice to have examples in your documentation
/// under an "Examples" header, like this:
/// # Examples
/// Code can be added in "fences" of 3 backticks.
///
/// ```
/// let bar = Bar::new();
/// ```
///
/// Examples also function as tests to ensure the examples actually compile.
/// The compiler will automatically generate a main() function and run the
/// example code as a test when cargo test is run.
struct Bar {
    ...
}

Testy dokumentacji

Kod w komentarzach do dokumentacji zostanie automatycznie wykonany przez cargo test . Są to tak zwane „testy dokumentacji” i pomagają upewnić się, że twoje przykłady działają i nie wprowadzą użytkowników twojej skrzyni w błąd.

Możesz zaimportować krewnego z korzenia skrzyni (tak jakby istniała ukryta extern crate mycrate; na górze przykładu)

/// ```
/// use mycrate::foo::Bar;
/// ```

Jeśli Twój kod może nie działać poprawnie w teście dokumentacji, możesz użyć atrybutu no_run , na przykład:

/// ```no_run
/// use mycrate::NetworkClient;
/// NetworkClient::login("foo", "bar");
/// ```

Możesz również wskazać, że Twój kod powinien panikować, w następujący sposób:

/// ```should_panic
/// unreachable!();
/// ```


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow