Desestruturação e Uso de Enumerações (Enums) em Rust

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, temos código que demonstra o uso de enums em Rust, incluindo como desestruturar um enum usando uma instrução match e acessar os valores associados com base na variante do enum.

Nota: Se o laboratório não especificar um nome de arquivo, você pode usar qualquer nome de arquivo que desejar. Por exemplo, você pode usar main.rs, compilar e executar com rustc main.rs && ./main.

enums

Um enum é desestruturado de forma semelhante:

// `allow` necessário para silenciar avisos porque apenas
// uma variante é usada.
#[allow(dead_code)]
enum Color {
    // Estes 3 são especificados apenas pelo seu nome.
    Red,
    Blue,
    Green,
    // Estes também ligam tuplas `u32` a diferentes nomes: modelos de cores.
    RGB(u32, u32, u32),
    HSV(u32, u32, u32),
    HSL(u32, u32, u32),
    CMY(u32, u32, u32),
    CMYK(u32, u32, u32, u32),
}

fn main() {
    let color = Color::RGB(122, 17, 40);
    // TODO ^ Tente diferentes variantes para `color`

    println!("Qual a cor?");
    // Um `enum` pode ser desestruturado usando um `match`.
    match color {
        Color::Red   => println!("A cor é Vermelha!"),
        Color::Blue  => println!("A cor é Azul!"),
        Color::Green => println!("A cor é Verde!"),
        Color::RGB(r, g, b) =>
            println!("Vermelho: {}, verde: {}, e azul: {}!", r, g, b),
        Color::HSV(h, s, v) =>
            println!("Matiz: {}, saturação: {}, valor: {}!", h, s, v),
        Color::HSL(h, s, l) =>
            println!("Matiz: {}, saturação: {}, luminosidade: {}!", h, s, l),
        Color::CMY(c, m, y) =>
            println!("Ciano: {}, magenta: {}, amarelo: {}!", c, m, y),
        Color::CMYK(c, m, y, k) =>
            println!("Ciano: {}, magenta: {}, amarelo: {}, chave (preto): {}!",
                c, m, y, k),
        // Não é necessário outro ramo porque todas as variantes foram examinadas
    }
}

Resumo

Parabéns! Você concluiu o laboratório de Enums. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.