Avatar ·

¿Qué significa el operador de signo de interrogación (?) en Rust y cómo funciona?

¡Hola a todos! Empecé a aprender Rust recientemente y me encontré con un operador extraño: el signo de interrogación (?). Lo vi en código de otra persona, pero no puedo entender qué hace. Aquí hay un ejemplo que encontré: ```rust use std::fs::File; use std::io::Read; fn read_file(path: &str) -> Result { let mut file = File::open(path)?; // ¿Qué hace `?` aquí? let mut contents = String::new(); file.read_to_string(&mut contents)?; // ¿Y aquí? Ok(contents) } ``` Intenté escribir un código similar sin este operador, usando `match`, y resultó muy verboso: ```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) } ``` Resulta que `?` reemplaza todo un