Avatar ·

Was macht der Fragezeichen-Operator (?) in Rust und wie funktioniert er mit Fehlern?

Hallo zusammen! Ich bin neu in Rust und versuche, die Fehlerbehandlung zu verstehen. Oft sehe ich in fremdem Code einen seltsamen Fragezeichen-Operator – `?`. Zum Beispiel diesen Code: ```rust use std::fs::File; use std::io::Read; fn read_file(path: &str) -> Result { let mut file = File::open(path)?; let mut content = String::new(); file.read_to_string(&mut content)?; Ok(content) } ``` Ich verstehe, dass `File::open` ein `Result` zurückgibt, aber was macht dieses `?` am Ende der Zeile? Ohne es beschwert sich der Compiler, dass ich das `Result` nicht behandle. Aber wenn ich `?` hinzufüge, funktioniert der Code. Ich habe versucht, die Dokumentation zu lesen, aber dort steht es kompliziert. Könnt ihr es einfach erklären: Was ist dieses magische Fragezeichen? Hängt es mit `unwrap()` oder `match` zusammen? Warum gibt die Funktion ein `Result` zurück?