Pular para o conteúdo

08 · Tratamento de Erros

Recuperação de Result em expressões

recover avalia o Result uma vez e extrai Ok. Seus padrões correspondem ao conteúdo de Err e precisam cobrir esse tipo. Ramos que continuam retornam o mesmo tipo do sucesso. Retornos, propagação e limpeza continuam pertencendo ao escopo externo.

Nesta página

recover avalia o Result uma vez e extrai Ok. Seus padrões correspondem ao conteúdo de Err e precisam cobrir esse tipo. Ramos que continuam retornam o mesmo tipo do sucesso. Retornos, propagação e limpeza continuam pertencendo ao escopo externo.

Exemplo completo

Recuperação de Result em expressões.

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())
}

Regras e comportamento

Condições e recuperação de erros · Documentação

A partir de um checkout do repositório:

zolo examples/features/recover_expression.zolo

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br