Option und Result
Fehlendes Null-Keyword
Abschnitt betitelt „Fehlendes Null-Keyword“fn foo(x: &i32) { println!("{x}");}
fn main() { let x = null; foo(x);}Rust hat keine Null-Pointer, daher existiert das Schlüsselwort null nicht. Ein Option-Typ sollte verwendet werden, um die Möglichkeit darzustellen, dass ein Objekt null ist.
Result-Typ: Enum vs. Struct
Abschnitt betitelt „Result-Typ: Enum vs. Struct“Betrachten Sie diese beiden Darstellungen eines Result-Typs, der einen Wert T enthält, wenn eine Berechnung erfolgreich ist, oder einen Fehler E, wenn sie fehlschlägt.
struct Result1<T, E> { ok: Option<T>, err: Option<E>,}
enum Result2<T, E> { Ok(T), Err(E)}Das Enum Result2 wird in Rust als idiomatischer angesehen als das Struct Result1.
Welche der folgenden Aussagen ist KEIN gültiger Grund dafür?
Es ist völlig in Ordnung, dass Structs Option-Typen als Felder enthalten (die Frage bezog sich darauf, welcher KEIN gültiger Grund ist). Wenn Ihre Datenstruktur jedoch Invarianten wie „genau eines von zwei optionalen Feldern sollte Some sein“ aufweist, dann wird diese Invariante besser durch die Verwendung eines Enums gewährleistet.