PR3-Rust-SS26/E-enums/06_exhaustiveness.rs

25 lines
566 B
Rust

// Exhaustiveness: der Compiler prüft, ob ALLE Varianten abgedeckt sind. Vergisst man eine → Compilerfehler.
enum Ampel {
Rot,
Gruen,
// Gelb, // ← einkommentieren und neu kompilieren!
}
fn aktion(a: &Ampel) -> &str {
match a {
Ampel::Rot => "Stehen bleiben",
Ampel::Gruen => "Gehen",
// Ohne Arm für Gelb → Compilerfehler:
// "non-exhaustive patterns: `Gelb` not covered"
}
}
fn main() {
let ampeln = [Ampel::Rot, Ampel::Gruen];
for a in &ampeln {
println!("{}", aktion(a));
}
}