Fortgeschrittene Typen
Never-Type Rückgabetyp
Abschnitt betitelt „Never-Type Rückgabetyp“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.
Generische Typen und Sized
Abschnitt betitelt „Generische Typen und Sized“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.