Avatar ·

Was sind Some und None in Rust? Erklären Sie Option<T> für Anfänger

Hallo! Ich habe gerade angefangen, Rust nach Python und JavaScript zu lernen, und bin auf eine unverständliche Konstruktion gestoßen. In fremdem Code sehe ich oft solche Dinge: ```rust fn find_user(id: u32) -> Option { if id == 42 { Some(String::from("Alice")) } else { None } } ``` Ich verstehe überhaupt nicht, was `Some` und `None` sind. Warum kann man nicht einfach einen String oder `null` zurückgeben? In Python würde ich schreiben: ```python def find_user(id): if id == 42: return "Alice" else: return None ``` Und das würde funktionieren. Aber in Rust muss ich irgendein `Option` schreiben und das Ergebnis in `Some` einwickeln. Außerdem habe ich versucht, das Ergebnis dieser Funktion zu verwenden – und bekam einen Kompilierungsfehler. Hier ist mein Code: ```rust let user = find_user(42); println!("User: {}", user); // Fehler! ``` Der Compiler beschwert sich, dass `Option` das `Display`-Trait nicht implementiert. Wie arbeite ich richtig damit? Was bedeuten `Some` und `None` überhaupt? Warum kann Rust es nicht machen wie