Einleitung: Warum Dokumentation in Rust keine bloße Marotte ist
In der Welt der Systemprogrammierung nimmt Rust aufgrund seiner Sicherheit, Leistung und des strengen Compilers einen besonderen Platz ein. Doch selbst der eleganteste Code ist nutzlos, wenn Entwickler nicht verstehen, wie man ihn verwendet. Dokumentation ist die Brücke zwischen Ihrem Code und seinen Benutzern. In Rust ist dieser Prozess nicht nur empfohlen, sondern auf Werkzeugebene in das Ökosystem integriert.
In diesem Artikel werden wir durchgehen, wie man Dokumentation für ein Rust-Projekt von Grund auf schreibt: von grundlegenden Doc-Kommentaren bis zur Erstellung eines vollständigen Buches mit mdbook. Sie erfahren, wie Sie rustdoc, Markdown-Formatierung und Tests in der Dokumentation nutzen, um Ihr Projekt verständlich und professionell zu gestalten.
Grundlagen: Dokumentieren von Code mit Doc-Kommentaren
Rust bietet zwei Arten von Kommentaren: normale (//) und Doc-Kommentare (/// und //!). Doc-Kommentare werden automatisch vom Werkzeug rustdoc verarbeitet, das HTML-Dokumentation generiert. Dies ist die Grundlage jedes Rust-Projekts.
Doc-Kommentare für öffentliche Elemente
Verwenden Sie /// zum Dokumentieren von Funktionen, Strukturen, Traits und Modulen. Beispiel:
/// Berechnet die Fakultät einer Zahl n./// /// # Argumente/// * `n` - eine nicht-negative ganze Zahl./// /// # Rückgabewert/// * `u64` - die Fakultät der Zahl n./// /// # Beispiele/// ```/// let result = factorial(5);/// assert_eq!(result, 120);/// ```pub fn factorial(n: u32) -> u64 { (1..=n).product()}Beachten Sie die Abschnitte # Argumente, # Rückgabewert und # Beispiele. Dies sind Standard-Markdown-Überschriften, die die Lesbarkeit verbessern.
Interne Dokumentation von Modulen
Verwenden Sie //! zum Dokumentieren des Moduls (der Datei) selbst:
//! Modul für mathematische Operationen.//!//! Dieses Modul stellt Funktionen zur Berechnung der Fakultät,//! von Fibonacci-Zahlen und anderen mathematischen Algorithmen bereit.Fortgeschrittene Techniken: Tests, Verweise und Attribute
Eine der Stärken von rustdoc ist die Möglichkeit, Code aus der Dokumentation als Tests auszuführen. Dies stellt sicher, dass Ihre Beispiele immer aktuell sind und funktionieren.
Tests in der Dokumentation (Doctests)
Jeder Codeblock innerhalb von Doc-Kommentaren, der als ```rust oder einfach ``` markiert ist, wird beim Ausführen von cargo test automatisch zu einem Test. Beispiel:
/// Addiert zwei Zahlen.////// ```/// let sum = add(2, 3);/// assert_eq!(sum, 5);/// ```pub fn add(a: i32, b: i32) -> i32 { a + b}Um Zeilen auszublenden, die nicht im Beispiel erscheinen sollen (z. B. fn main()), verwenden Sie das Attribut # :
/// ```/// # fn main() {/// let x = 42;/// assert_eq!(x, 42);/// # }/// ```Verweise auf andere Elemente
Sie können mit der Syntax [`name`] auf andere Funktionen, Strukturen oder Module verweisen. Rustdoc erstellt automatisch einen Hyperlink:
/// Verwendet die Funktion [`factorial`] zur Berechnung von Kombinationen.Dokumentationsattribute
Attribute ermöglichen es, das Verhalten von rustdoc zu steuern:
#[doc(hidden)]— blendet ein Element aus der Dokumentation aus.#[doc(alias = "alternativer_name")]— fügt einen Alias für die Suche hinzu.#[doc(cfg(feature = "some_feature"))]— zeigt die Dokumentation nur an, wenn das Feature aktiviert ist.
Beispiel für die Verwendung von #[doc(alias)]:
#[doc(alias = "hallo")]pub fn greet(name: &str) -> String { format!("Hallo, {}!", name)}Generierung und Veröffentlichung: cargo doc und docs.rs
Wenn die Dokumentation geschrieben ist, muss sie generiert werden.