Teil 17: Module und Dateien
Lernziel: Projektcode organisieren.
Voraussetzungen: Die vorherigen Lektionen, insbesondere Teil 16.
Worum geht es?
Module teilen größere Programme in überschaubare Bereiche. Cargo verwendet dafür eine klare Dateistruktur.
Schritt für Schritt
Erstelle in deinem Cargo-Projekt die Datei src/messwerte.rs:
pub fn mittelwert(werte: &[f64]) -> Option<f64> {
if werte.is_empty() { None }
else { Some(werte.iter().sum::<f64>() / werte.len() as f64) }
}
In src/main.rs:
mod messwerte;
fn main() {
let liste = [20.0, 22.0, 24.0];
println!("Mittelwert: {:?}", messwerte::mittelwert(&liste));
}
mod messwerte; bindet das Modul aus der Datei ein. pub macht die Funktion außerhalb des Moduls erreichbar. Ohne pub bleibt sie privat.
Kleine Projektstruktur
src/
├── main.rs
└── messwerte.rs
Die Trennung von Eingabe/Ausgabe und Berechnungslogik macht Programme verständlicher und erleichtert spätere Tests.
Selbst ausprobieren
Ergänze im Modul messwerte.rs eine öffentliche Funktion maximum, die aus einem nicht leeren Slice den größten Wert berechnet.
Musterlösung anzeigen
pub fn maximum(werte: &[f64]) -> Option<f64> {
werte.iter().copied().reduce(f64::max)
}
Aufruf in main: println!("{:?}", messwerte::maximum(&[1.0, 3.0, 2.0]));.
Das solltest du mitnehmen
- Projektcode organisieren.
- 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.
