Desestructuración y uso de enums en Rust

Beginner

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

Introducción

En este laboratorio, tenemos código que demuestra el uso de los enum en Rust, incluyendo cómo desestructurar un enum utilizando una declaración match y acceder a los valores asociados según la variante del enum.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilar y ejecutarlo con rustc main.rs &&./main.

enum

Un enum se desestructura de manera similar:

// `allow` es necesario para silenciar advertencias porque solo
// se utiliza una variante.
#[allow(dead_code)]
enum Color {
    // Estas 3 se especifican solo por su nombre.
    Red,
    Blue,
    Green,
    // Estas igualmente asocian tuplas `u32` con diferentes nombres: modelos de color.
    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 ^ Prueba diferentes variantes para `color`

    println!("¿Qué color es?");
    // Un `enum` se puede desestructurar utilizando una `match`.
    match color {
        Color::Red   => println!("El color es Rojo!"),
        Color::Blue  => println!("El color es Azul!"),
        Color::Green => println!("El color es Verde!"),
        Color::RGB(r, g, b) =>
            println!("Rojo: {}, verde: {}, y azul: {}!", r, g, b),
        Color::HSV(h, s, v) =>
            println!("Matiz: {}, saturación: {}, valor: {}!", h, s, v),
        Color::HSL(h, s, l) =>
            println!("Matiz: {}, saturación: {}, luminosidad: {}!", h, s, l),
        Color::CMY(c, m, y) =>
            println!("Cian: {}, magenta: {}, amarillo: {}!", c, m, y),
        Color::CMYK(c, m, y, k) =>
            println!("Cian: {}, magenta: {}, amarillo: {}, clave (negro): {}!",
                c, m, y, k),
        // No es necesario otro brazo porque todas las variantes han sido examinadas
    }
}

Resumen

¡Felicitaciones! Has completado el laboratorio de Enums. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.