28 lines
829 B
Rust
28 lines
829 B
Rust
// Result<T, E> 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<u32, FehlerArt> {
|
|
if input.len() < 1 {
|
|
return Err(FehlerArt::ZuKurz);
|
|
}
|
|
input.parse::<u32>().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"),
|
|
}
|
|
}
|
|
}
|