// Result modelliert Erfolg ODER Fehler. Jeder Fehlertyp ist eine eigene Enum Variante. #[derive(Debug)] //generiert automatisch eine Debug-Ausgabe enum FehlerArt { ZuKurz, KeineZahl, } // Rückgabe ist entweder Ok(eine_zahl) oder Err(ein_fehler) fn parse_alter(input: &str) -> Result { if input.len() < 1 { return Err(FehlerArt::ZuKurz); } input.parse::().map_err(|_| FehlerArt::KeineZahl) } fn main() { let eingaben = vec!["25", "", "abc", "42"]; for e in eingaben { match parse_alter(e) { Ok(alter) => println!("\"{e}\" → Alter: {alter}"), Err(FehlerArt::ZuKurz) => println!("\"{e}\" → Fehler: leere Eingabe"), Err(FehlerArt::KeineZahl) => println!("\"{e}\" → Fehler: keine gültige Zahl"), } } }