Saltar al contenido

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
Playground
// 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

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br