Menu
Coddy logo textTech

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 valor

Quando 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.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Folha de consulta

O enum Option<T> representa um valor que pode ou não estar presente, prevenindo bugs ao usar valores inexistentes.

Ele possui duas variantes:

Some(value)  // Contém um valor
None         // Não contém valor

Funções que podem não retornar um valor usam Option. Por exemplo, o método .get() de um hash map retorna Some(&value) quando uma chave existe, ou None quando não existe.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

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