Avatar ·

Que signifie l'opérateur point d'interrogation (?) en Rust et comment fonctionne-t-il ?

Bonjour à tous ! J'ai commencé à apprendre Rust récemment et je suis tombé sur un opérateur étrange — le point d'interrogation (?). Je l'ai vu dans le code de quelqu'un d'autre, mais je ne comprends pas ce qu'il fait. Voici un exemple que j'ai trouvé : ```rust use std::fs::File; use std::io::Read; fn read_file(path: &str) -> Result { let mut file = File::open(path)?; // Que fait `?` ici ? let mut contents = String::new(); file.read_to_string(&mut contents)?; // Et ici ? Ok(contents) } ``` J'ai essayé d'écrire un code similaire sans cet opérateur, en utilisant `match`, et cela est devenu très lourd : ```rust fn read_file_verbose(path: &str) -> Result { let mut file = match File::open(path) { Ok(f) => f, Err(e) => return Err(e), }; let mut contents = String::new(); match file.read_to_string(&mut contents) { Ok(_) => {}, Err(e) => return Err(e), }; Ok(contents) } ``` Il s'avère que `?` remplace tout un bloc de code.