Zum Inhalt springen

Fortgeschrittene Typen

fn expect_none(x: Option<i32>) -> ! {
match x {
Some(n) => panic!("Expected none, found Some({n})"),
None => ()
}
}
fn main() {
println!("{:?}", expect_none(None));
}

Der Typ ! ist kein geeigneter Rückgabetyp für diese Funktion, da sie nur manchmal, nicht immer, einen Panic auslöst.


fn is_equal<T: Eq>(t1: &T, t2: &T) -> bool {
t1 == t2
}
fn main() {
println!("{}", is_equal("Hello", "world"));
}

Der Aufruf von is_equal übergibt Werte vom Typ &str. Das bedeutet, dass T = str ist. Der Typ str darf jedoch in einer solchen generischen Funktion nur verwendet werden, wenn T als ?Sized markiert ist.