Gestión Estructurada de Errores con Result

Ya hemos visto la enum Result. Se utiliza normalmente cuando se esperan errores como parte del funcionamiento normal:

use std::fs;
use std::io::Read;

fn main() {
    let file = fs::File::open("diary.txt");
    match file {
        Ok(mut file) => {
            let mut contents = String::new();
            file.read_to_string(&mut contents);
            println!("Dear diary: {contents}");
        },
        Err(err) => {
            println!("The diary could not be opened: {err}");
        }
    }
}
  • Al igual que con Option, el valor correcto se encuentra dentro de Result, lo que obliga al desarrollador a extraerlo de forma explícita. Esto fomenta la comprobación de errores. En el caso de que nunca se produzca un error, se puede llamar a unwrap() o a expect(), y esto también es una señal de la intención del desarrollador.
  • La documentación sobre Result es una lectura recomendada. Aunque no se vea durante este curso, merece la pena mencinarlo. Contiene muchos métodos y funciones prácticos que ayudan a seguir una programación funcional.