Enums
A palavra-chave enum
permite a criação de um tipo que possui algumas variantes diferentes:
fn generate_random_number() -> i32 { // Implementação baseada em https://xkcd.com/221/ 4 // Escolhido por uma rolagem de dados justa. Garantido ser aleatĂłrio. } #[derive(Debug)] enum CoinFlip { Heads, Tails, } fn flip_coin() -> CoinFlip { let random_number = generate_random_number(); if random_number % 2 == 0 { return CoinFlip::Heads; } else { return CoinFlip::Tails; } } fn main() { println!("VocĂȘ tirou: {:?}", flip_coin()); }
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.