Rust Grundlagen auf dem PC · Teil 16TutorialEinsteiger

Rust

Rust Grundlagen 16: Enums und match

Programmzustände sicher abbilden. Verständliche Rust-Lektion mit Beispielen, Übung und Musterlösung.

Kapitel: Programme strukturieren

Veröffentlicht am

Teil 16: Enums und match

Lernziel: Programmzustände sicher abbilden.

Voraussetzungen: Die vorherigen Lektionen, insbesondere Teil 15.

Worum geht es?

Mit enum legst du fest, welche Zustände möglich sind. match verarbeitet diese vollständig.

Schritt für Schritt

enum Status {
    Aus,
    Aufheizen,
    Drucken { fortschritt: u8 },
    Fertig,
}

fn beschreibe(status: Status) {
    match status {
        Status::Aus => println!("Ausgeschaltet"),
        Status::Aufheizen => println!("Heizt auf"),
        Status::Drucken { fortschritt } => println!("Druckt: {fortschritt}%"),
        Status::Fertig => println!("Fertig"),
    }
}

fn main() {
    beschreibe(Status::Drucken { fortschritt: 42 });
}

match ist erschöpfend: Jeder mögliche Zustand muss behandelt werden. Rust meldet vergessene Varianten beim Kompilieren.

Muster mit if let

Wenn du nur einen Fall behandeln möchtest, ist if let oft kompakter:

let status = Status::Fertig;
if let Status::Fertig = status { println!("Bereit zur Entnahme"); }

Du kannst später über Option<T> und Result<T, E> ebenfalls mit match entscheiden.

Selbst ausprobieren

Erweitere das Enum um Fehler(String) und gib bei diesem Zustand die Fehlermeldung aus.

Musterlösung anzeigen
enum Status { Bereit, Fehler(String) }
fn main() {
    let status = Status::Fehler("Filament leer".into());
    match status {
        Status::Bereit => println!("Bereit"),
        Status::Fehler(text) => println!("Fehler: {text}"),
    }
}

Das solltest du mitnehmen

  • Programmzustände sicher abbilden.
  • Nutze cargo run für das Ausführen und cargo check für eine schnelle Fehlerprüfung (ab Teil 4).
  • Experimentiere mit veränderten Werten und beobachte die Compilermeldungen.

Weiterführende Quellen


← Vorheriger Teil | Kursübersicht | Nächster Teil →