Schreiben von Dokumentation für ein Rust-Projekt: Von den Grundlagen bis zu fortgeschrittenen Techniken
Das Dokumentieren von Code ist ein wesentlicher Bestandteil der professionellen Entwicklung in Rust. Dank des integrierten Tools rustdoc wird die Erstellung hochwertiger Dokumentation zu einem einfachen und effizienten Prozess. In diesem Artikel werden wir behandeln, wie man Dokumentation für Rust-Projekte richtig schreibt und dabei alle Möglichkeiten des Ökosystems nutzt.
Grundlagen der Dokumentation in Rust
Rust verwendet eine spezielle Syntax für die Dokumentation, die auf Markdown basiert. Die Dokumentation wird mit Hilfe von doc-Kommentaren geschrieben, die mit /// (für externe Dokumentation) oder //! (für interne Dokumentation von Modulen) beginnen.
Betrachten wir ein grundlegendes Beispiel:
/// Berechnet die Fakultät einer Zahl.////// Diese Funktion nimmt eine nicht-negative ganze Zahl `n`/// und gibt deren Fakultät zurück. Wenn `n` gleich 0 ist, wird 1 zurückgegeben.////// # Beispiele////// ```/// let result = factorial(5);/// assert_eq!(result, 120);/// ```pub fn factorial(n: u64) -> u64 { (1..=n).product()}
//! # Modul für mathematische Funktionen//!//! Dieses Modul enthält grundlegende mathematische Operationen,//! einschließlich der Berechnung von Fakultäten und Binomialkoeffizienten.pub mod math;Generierung von Dokumentation mit rustdoc
Das Tool rustdoc ist Teil des standardmäßigen Rust-Werkzeugsatzes und generiert automatisch HTML-Dokumentation aus doc-Kommentaren. Zum Ausführen genügt der Befehl:
cargo doc --openDieser Befehl generiert die Dokumentation für Ihr Projekt und alle seine Abhängigkeiten und öffnet sie anschließend im Browser. Sie können auch zusätzliche Flags angeben:
--no-deps— Dokumentation von Abhängigkeiten nicht einbeziehen--document-private-items— private Elemente dokumentieren--target-dir— Verzeichnis für die Ausgabedateien angeben
Die generierte Dokumentation enthält automatisch Navigation, Suche, Links zu Typen und Funktionen sowie Tests aus den Codebeispielen.
Struktur von doc-Kommentaren und spezielle Abschnitte
Hochwertige Dokumentation in Rust folgt einer bestimmten Struktur. Es wird empfohlen, die folgenden Abschnitte zu verwenden:
- Kurzbeschreibung — die erste Zeile des Kommentars, wird in Listen und der Suche angezeigt
- Detaillierte Beschreibung — erläutert die Funktionsweise, Besonderheiten und Einschränkungen
# Examples— ein oder mehrere Anwendungsbeispiele# Panics— Situationen, in denen die Funktion eine Panik auslösen kann# Errors— mögliche Fehler und deren Behandlung# Safety— für unsafe-Funktionen: Erläuterung der Sicherheitsvorbedingungen
Beispiel einer vollständigen Funktionsdokumentation:
/// Teilt einen String anhand des angegebenen Trennzeichens in Teile.////// Gibt einen Vektor von Strings zurück, die nach dem Teilen/// des ursprünglichen Strings `text` an jedem Vorkommen von `delimiter`/// erhalten wurden. Leere Strings werden nicht in das Ergebnis aufgenommen.////// # Examples////// ```/// let result = split_string("a,b,c", ',');/// assert_eq!(result, vec!["a", "b", "c"]);/// ```////// # Panics////// Die Funktion löst eine Panik aus, wenn `delimiter` ein leerer String ist.////// # Errors////// Diese Funktion gibt keine Fehler zurück, kann aber eine Panik auslösen.pub fn split_string(text: &str, delimiter: char) -> Vec<String> { assert!(delimiter != '\\0', "Das Trennzeichen darf kein Nullzeichen sein"); text.split(delimiter) .filter(|s| !s.is_empty()) .map(|s| s.to_string()) .collect()}Testen der Dokumentation
Eine der großen Stärken von Rust ist die Möglichkeit, Codebeispiele direkt in der Dokumentation zu testen. Der Befehl cargo test führt automatisch alle Beispiele aus den doc-Komment