¿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