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 deResult
, 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 aunwrap()
o aexpect()
, 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.