Ein struct fasst Felder zusammen, impl fügt Methoden hinzu. Ein enum beschreibt mehrere Varianten, die auch Daten tragen können. Rust hat kein null: Stattdessen steht Option<T> mit Some(wert) oder None. Auch Fehler stehen im Typ: Result<T, E> mit Ok oder Err.
Mit match oder if let packst du diese Typen sicher aus.
struct Person { name: String, alter: u32 }
impl Person {
fn ist_volljaehrig(&self) -> bool { self.alter >= 18 }
}
fn finde(zahlen: &[i32], ziel: i32) -> Option<usize> {
zahlen.iter().position(|&z| z == ziel)
}
fn main() {
let p = Person { name: "Mia".to_string(), alter: 17 };
println!("{} {}", p.name, p.ist_volljaehrig());
match finde(&[4, 8, 15], 8) {
Some(i) => println!("gefunden bei {i}"),
None => println!("nicht gefunden"),
}
}Merke
implfügt Methoden zu Typen hinzuOptionersetzt nullResulttransportiert Fehler
Aufgabe
Schreibe eine Funktion, die bei einem Text, der keine Zahl ist, ein `Err` liefert.