O que é um 'Option'?
Parte da seção Logic & Flow do Journey de Rust da Coddy. Lição 35 de 66.
Na programação, você frequentemente encontra situações em que um valor pode ou não estar presente. Por exemplo, pesquisar um item em uma lista pode encontrar o item, ou ele pode não existir de forma alguma. As linguagens de programação tradicionais costumam usar valores especiais como null ou -1 para representar o "nada", mas essa abordagem pode levar a bugs e falhas.
Rust adota uma abordagem diferente com o enum Option<T>. Este é um tipo embutido que representa explicitamente a possibilidade de ausência. Em vez de adivinhar se um valor existe, o Rust força você a lidar com ambos os casos antecipadamente.
O enum Option tem exatamente duas variantes:
Some(value) // Contém um valor
None // Não contém nenhum valorQuando uma função pode não retornar um valor, ela retorna um Option. Se houver um valor para retornar, ela o envolve em Some. Se não houver valor, ela retorna None.
Isso torna a ausência potencial explícita no sistema de tipos, impedindo que você use acidentalmente um valor que não existe.
Você já viu o Option em ação com o método .get() do hash map - ele retorna Some(&value) quando uma chave existe, ou None quando não existe. Este padrão aparece em todo o Rust, tornando seu código mais seguro e previsível.
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 Book2Introduçã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 Final6Lidando com a Ausência com 'Option'
O que é um 'Option'?Usando 'match' com 'Option'is_some() e is_none()Fazendo o unwrap de um 'Option'O método expectFornecendo um valor padrão: unwrap_orRecapitulação - Encontrar um ElementoPratique por conta própria: Compilador de Rust online