Carregando
0xC0Lição 13 de 17

Propagação de Result e operador ?

Trate etapas falíveis com clareza usando `Result` e `?`.

18 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • 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.

main.rs
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}
Saída
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 XP

Rastreie o `?` em um fluxo falível

Acompanhe como ? continua com Ok ou retorna cedo com Err.

Mensagem 1 de 3Previsões 0/0
Input text
parse helper
caller handling

Principais conclusões

  • ? reduz boilerplate de matches aninhados.

  • Ok segue o fluxo normal com o valor extraído.

  • Err interrompe 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.

Exercício 1

Divida com propagação de erros

+25 XP

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
main.rs
Carregando editor…

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…