Enums
A palavra-chave enum
permite a criação de um tipo que possui algumas variantes diferentes:
fn gerar_numero_aleatorio() -> i32 { // Implementação baseada em https://xkcd.com/221/ 4 // Escolhido por uma rolagem de dados justa. Garantido ser aleatĂłrio. } #[derive(Debug)] enum MoedaJogada { Cara, Coroa, } fn jogar_moeda() -> MoedaJogada { let numero_aleatorio = gerar_numero_aleatorio(); if numero_aleatorio % 2 == 0 { return MoedaJogada::Cara; } else { return MoedaJogada::Coroa; } } fn main() { println!("VocĂȘ tirou: {:?}", jogar_moeda()); }
Pontos Chave:
- EnumeraçÔes permitem coletar um conjunto de valores em um tipo
- Esta pĂĄgina oferece um tipo de enum
MoedaJogada
com duas variantesCara
eCoroa
. VocĂȘ pode observar o namespace ao usar variantes. - Este pode ser um bom momento para comparar Structs e Enums:
- Em ambos, vocĂȘ pode ter uma versĂŁo simples sem campos (unit struct, ou estrutura unitĂĄria) ou uma com diferentes tipos de campo.
- Em ambos, as funçÔes associadas são definidas dentro de um bloco
impl
. - VocĂȘ pode atĂ© mesmo implementar as diferentes variantes de uma Enum com Structs separadas, mas elas nĂŁo seriam do mesmo tipo, como seriam se todas fossem definidas em uma Enum.