Definición


Siempre que una función devuelva un Resultado, significa que puede ocurrir un error y por lo tanto hay que manejarlo. En el caso de ser una Opción también hay que manejarlo.

Para eso tenemos las operaciones:

  • operador : Este propaga el error o la opción a la función que lo llame. Para el caso de los resultados el error tiene que coincidir.
enum ErroresMatematicos {
	ErrorDivisionPorCero,
}
 
fn dividir(num: f64, den: f64) -> Result<f64, ErroresMatematicos> {
	if den == 0.0 {
		Err(ErroresMatematicos::ErrorDivisionPorCero)
	} else {
		Ok(num / den)
	}
}
 
fn operar(num: f64, den: f65) -> Result<f64, ErroresMatematicos> {
	let division: f64 = dividir(num, den)?;
	Ok(division)
}
  • Los métodos unwrap() y expect(”…“): Estos En si no manejan el error simplemente obtienen el valor Ok en un resultado, o Some en una opción y paniquean en el caso de haber un error o ser None.
  • El método unwrap_or(valor): En el caso de Ok o Some actua como el unwrap(), pero en el caso de error o None, este devuelve el valor otorgado.
  • Por último tenemos métodos como is_some(), is_none(), is_ok(), is_err(): Nos sirven para manejarlos.