Einleitung: Warum Dokumentation in Rust kein Luxus, sondern eine Notwendigkeit ist
\n\nRust ist bekannt für seine sichere Speicherverwaltung, Leistung und sein strenges Typsystem. Doch selbst der eleganteste Code ist nutzlos, wenn niemand versteht, wie man ihn verwendet. Hochwertige Dokumentation ist die Brücke zwischen Ihrem Code und den Benutzern (einschließlich Ihrer selbst in sechs Monaten).
\n\nGlücklicherweise bietet Rust leistungsstarke Werkzeuge zur automatischen Generierung von Dokumentation direkt aus dem Quellcode. In diesem Artikel werden wir den gesamten Prozess durchgehen: von einfachen Kommentaren bis zur Erstellung vollständiger Dokumentation mit Beispielen, Links und sogar mathematischen Formeln.
\n\n1. Grundlagen: doc-Kommentare und rustdoc
\n\nIn Rust gibt es zwei Arten von Kommentaren: normale (// und /* */) und Dokumentationskommentare (/// und //!). Letztere werden vom Werkzeug rustdoc verarbeitet, das HTML-Dokumentation generiert.
1.1. Äußere und innere doc-Kommentare
\n\n- \n
///— äußerer Kommentar. Wird vor einem Element (Funktion, Struktur, Trait) geschrieben und beschreibt es. \n //!— innerer Kommentar. Wird verwendet, um das Modul, die Crate oder die Datei selbst zu dokumentieren. \n
/// Berechnet die Fakultät von n.\n///\n/// # Beispiele\n/// ```\n/// let result = factorial(5);\n/// assert_eq!(result, 120);\n/// ```\npub fn factorial(n: u32) -> u32 {\n (1..=n).product()\n}\n\n//! # Meine Super-Crate\n//!\n//! Diese Crate bietet Hilfsmittel für die Arbeit mit Mathematik.\n//! Weitere Details finden Sie in der [Dokumentation](https://example.com).\n\n1.2. Generierung der Dokumentation starten
\n\nUm die Dokumentation zu generieren, führen Sie den folgenden Befehl aus:
\n\ncargo doc --open\n\nDieser Befehl scannt alle doc-Kommentare in Ihrem Projekt, erstellt HTML-Dateien im Ordner target/doc/ und öffnet sie im Browser. Sie sehen eine Seite mit einer Liste von Modulen, Funktionen und Strukturen – genau wie auf docs.rs.
2. Dokumentationsabschnitte: Wie man sie lesbar macht
\n\nEinfach einen Kommentar zu schreiben, reicht nicht aus. Damit die Dokumentation nützlich ist, muss sie strukturiert sein. rustdoc unterstützt Markdown, sodass Sie Überschriften, Listen, Links und sogar Codeblöcke verwenden können.
2.1. Standardabschnitte
\n\nEs ist üblich, die folgenden Abschnitte zu verwenden (beginnend mit # ):
- \n
# Beispiele— ein oder mehrere Anwendungsbeispiele. \n # Panics— in welchen Fällen die Funktion eine Panik auslöst. \n # Fehler— wenn die Funktion einResultzurückgibt, beschreiben Sie die möglichen Fehler. \n # Sicherheit— obligatorisch fürunsafe-Funktionen. \n # Argumente— Beschreibung der Parameter (obwohl sie oft direkt im Text beschrieben werden). \n
/// Liest den Inhalt einer Datei und gibt ihn als String zurück.\n///\n/// # Argumente\n/// * `path` — Pfad zur Datei.\n///\n/// # Fehler\n/// Gibt `io::Error` zurück, wenn die Datei nicht existiert oder nicht lesbar ist.\n///\n/// # Panics\n/// Löst eine Panik aus, wenn der Pfad ein Nullbyte enthält.\n///\n/// # Beispiele\n/// ```\n/// let content = read_file("hello.txt").unwrap();\n/// println!("{}", content);\n/// ```\npub fn read_file(path: &str) -> Result<String, std::io::Error> {\n std::fs::read_to_string(path)\n}\n\n2.2. Links und Querverweise
\n\nSie können auf andere Code-Elemente verweisen. rustdoc wandelt sie automatisch in Hyperlinks um:
/// Verwendet die Funktion [`factorial`] zur Berechnung von Kombinationen.\n/// Siehe auch das Modul [`math::combinatorics`].\npub fn combinations(n: u32, k: u32) -> u32 {\n factorial(n) / (factorial(k) * factorial(n - k))\n}\n\nWenn Sie auf eine