Desestructuración y uso de enums en Rust

RustRustBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") subgraph Lab Skills rust/variable_declarations -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} rust/integer_types -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} rust/function_syntax -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} rust/expressions_statements -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} rust/lifetime_specifiers -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} rust/method_syntax -.-> lab-99312{{"Desestructuración y uso de enums en Rust"}} end

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.