Teil 22: Crates und Tests
Lernziel: Bibliotheken und Qualitätssicherung.
Voraussetzungen: Die vorherigen Lektionen, insbesondere Teil 21.
Worum geht es?
Ein Rust-Paket heißt Crate. Cargo verwaltet Abhängigkeiten. Mit automatisierten Tests kannst du wichtige Berechnungen wiederholt überprüfen.
Schritt für Schritt
Bibliotheken einbinden
Eine Crate kann über cargo add ergänzt werden, beispielsweise:
cargo add serde --features derive
Dadurch wird Cargo.toml angepasst. Cargo.lock hält aufgelöste Versionen fest. Für diesen Kurs benötigst du jedoch keine externe Bibliothek.
Testbarer Code
Erstelle src/main.rs:
fn mittelwert(werte: &[f64]) -> Option<f64> {
if werte.is_empty() { return None; }
Some(werte.iter().sum::<f64>() / werte.len() as f64)
}
fn main() {
println!("{:?}", mittelwert(&[2.0, 4.0, 6.0]));
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn drei_werte() {
assert_eq!(mittelwert(&[2.0, 4.0, 6.0]), Some(4.0));
}
#[test]
fn leere_liste() {
assert_eq!(mittelwert(&[]), None);
}
}
Starte cargo test. Weitere Werkzeuge sind cargo fmt für Formatierung und cargo clippy für Codehinweise. Vergleiche Gleitkommazahlen bei allgemeinen Berechnungen besser mit Toleranz statt blind auf bitgenaue Gleichheit zu setzen.
Selbst ausprobieren
Ergänze einen Test für genau einen Messwert und starte cargo test.
Musterlösung anzeigen
#[test]
fn einzelwert() {
assert_eq!(mittelwert(&[7.5]), Some(7.5));
}
Den Test innerhalb des vorhandenen tests-Moduls ergänzen. cargo test muss alle drei Tests bestehen.
Das solltest du mitnehmen
- Bibliotheken und Qualitätssicherung.
- Nutze
cargo runfür das Ausführen undcargo checkfür eine schnelle Fehlerprüfung (ab Teil 4). - Experimentiere mit veränderten Werten und beobachte die Compilermeldungen.
