Propagação de Result e operador ?
Trate etapas falíveis com clareza usando `Result` e `?`.
- Usar
?para propagar erros de parse e validação.
O operador ? interrompe a função em caso de Err e extrai valores Ok, deixando código falível mais conciso. Ele funciona em funções que retornam Result (ou tipos compatíveis) e mantém fluxo de erro explícito.
1fn parse_positive(value: &str) -> Result<i32, String> {
2 let number: i32 = value.trim().parse().map_err(|_| "invalid integer".to_string())?;
3 if number > 0 { Ok(number) } else { Err("must be positive".to_string()) }
4}
5
6fn main() {
7 println!("{:?}", parse_positive("12"));
8}Ok(12)
Use ? em cada etapa falível para retornar cedo quando houver falha. Assim, o caminho de sucesso fica legível sem esconder tratamento de erro.
Experimente
Até 15 XPRastreie o `?` em um fluxo falível
Acompanhe como ? continua com Ok ou retorna cedo com Err.
Principais conclusões
?reduz boilerplate de matches aninhados.Oksegue o fluxo normal com o valor extraído.Errinterrompe a função de forma explícita e segura.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em Rust
Estes exercícios rodam de verdade. Escreva o programa, clique em “Executar testes” e leia o que o compilador informa: aprender a ler as mensagens do compilador é metade do aprendizado de Rust.
Divida com propagação de erros
Implemente safe_divide retornando Result<i32, String>. Retorne erro em divisão por zero; caso contrário, retorne o quociente. Imprima valor ou error.
- Divisão válida
- Divisão por zero
As aulas de Rust foram escritas para o Rust estável moderno; os exercícios rodam no Rust 1.82 pelo Wandbox, um serviço público gratuito. Seu código-fonte e a entrada de teste são enviados a esse serviço.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…