O que é um 'Result'?
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 42 de 66.
Enquanto o Option lida com a ausência de valores, o Rust fornece outro enum para um cenário diferente, mas igualmente importante: operações que podem falhar. Conheça o Result<T, E> - a principal ferramenta do Rust para lidar com erros recuperáveis.
O enum Result possui duas variantes que representam o resultado de uma operação:
enum Result<T, E> {
Ok(T), // Sucesso - contém o resultado bem-sucedido
Err(E), // Falha - contém informações de erro
}Quando uma operação é bem-sucedida, ela retorna Ok(value) contendo o resultado de sucesso. Quando ela falha, ela retorna Err(error) contendo informações sobre o que deu errado. Este tratamento explícito de casos de sucesso e falha torna os programas em Rust mais confiáveis e previsíveis.
Você encontrará Result em todos os lugares no Rust - desde operações de arquivo que podem falhar devido a arquivos ausentes, até requisições de rede que podem expirar, até operações de parsing que podem receber entradas inválidas. Ao contrário de linguagens que usam exceções, o Rust força você a reconhecer que as operações podem falhar e a lidar com ambos os resultados explicitamente.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Folha de consulta
O enum Result<T, E> lida com operações que podem falhar:
enum Result<T, E> {
Ok(T), // Sucesso - contém o resultado bem-sucedido
Err(E), // Falha - contém informações de erro
}Quando uma operação é bem-sucedida, ela retorna Ok(value). Quando ela falha, ela retorna Err(error).
O Result é usado para erros recuperáveis, como operações de arquivo, solicitações de rede e operações de parsing. O Rust exige o tratamento explícito de casos de sucesso e de falha.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book7Tratando Erros com 'Result'
O que é um 'Result'?Usando 'match' com 'Result'is_ok() e is_err()Atalhos: unwrap e expectO Operador de Interrogação '?'Parsing de Strings para NúmerosRecapitulação - Função de Divisão Segura2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final