08 · Manejo de Errores
Recuperación de Result en expresiones
recover evalúa el Result una vez y extrae Ok. Sus patrones corresponden al contenido de Err y deben cubrir ese tipo. Las ramas que continúan devuelven el tipo del éxito. Retornos, propagación y limpieza pertenecen al alcance exterior.
En esta página
recover evalúa el Result una vez y extrae Ok. Sus patrones corresponden al contenido de Err y deben cubrir ese tipo. Las ramas que continúan devuelven el tipo del éxito. Retornos, propagación y limpieza pertenecen al alcance exterior.
Ejemplo completo
Recuperación de Result en expresiones.
recover_expression.zolo
// A successful Result keeps its value. Recovery handles only its error.
enum ReadError { Missing, Invalid }
fn number(result: Result<int, ReadError>) -> int {
result recover {
.Missing => 0,
.Invalid => -1,
}
}
fn preserve(result: Result<int, str>) -> Result<int, str> {
let value = result recover { error => return Result.Err(error) }
Result.Ok(value)
}
fn main() {
print(number(Result.Ok(7)))
print(number(Result.Err(ReadError.Missing)))
print(number(Result.Err(ReadError.Invalid)))
print(preserve(Result.Err("missing")).is_err())
}
Reglas y comportamiento
Condiciones y recuperación de errores · Documentación
Desde un checkout del repositorio:
zolo examples/features/recover_expression.zolo
Consulta también