Rust Enum Zerlegung und Verwendung

RustRustBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab haben wir Code, der die Verwendung von Enums in Rust demonstriert, einschließlich der Vorgehensweise, wie man ein Enum mit einer match-Anweisung zerlegt und die zugehörigen Werte basierend auf der Enum-Variante zugreift.

Hinweis: Wenn das Lab keinen Dateinamen angibt, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie main.rs verwenden und es mit rustc main.rs &&./main kompilieren und ausführen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) 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{{"Rust Enum Zerlegung und Verwendung"}} rust/integer_types -.-> lab-99312{{"Rust Enum Zerlegung und Verwendung"}} rust/function_syntax -.-> lab-99312{{"Rust Enum Zerlegung und Verwendung"}} rust/expressions_statements -.-> lab-99312{{"Rust Enum Zerlegung und Verwendung"}} rust/lifetime_specifiers -.-> lab-99312{{"Rust Enum Zerlegung und Verwendung"}} rust/method_syntax -.-> lab-99312{{"Rust Enum Zerlegung und Verwendung"}} end

Enums

Ein enum wird ähnlich zerlegt:

// `allow` erforderlich, um Warnungen zu unterdrücken, da nur
// eine Variante verwendet wird.
#[allow(dead_code)]
enum Color {
    // Diese 3 werden ausschließlich durch ihren Namen angegeben.
    Red,
    Blue,
    Green,
    // Diese verbinden ebenfalls `u32`-Tupel mit verschiedenen Namen: Farbmodelle.
    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 ^ Versuchen Sie verschiedene Varianten für `color`

    println!("What color is it?");
    // Ein `enum` kann mit einer `match` zerlegt werden.
    match color {
        Color::Red   => println!("The color is Red!"),
        Color::Blue  => println!("The color is Blue!"),
        Color::Green => println!("The color is Green!"),
        Color::RGB(r, g, b) =>
            println!("Red: {}, green: {}, and blue: {}!", r, g, b),
        Color::HSV(h, s, v) =>
            println!("Hue: {}, saturation: {}, value: {}!", h, s, v),
        Color::HSL(h, s, l) =>
            println!("Hue: {}, saturation: {}, lightness: {}!", h, s, l),
        Color::CMY(c, m, y) =>
            println!("Cyan: {}, magenta: {}, yellow: {}!", c, m, y),
        Color::CMYK(c, m, y, k) =>
            println!("Cyan: {}, magenta: {}, yellow: {}, key (black): {}!",
                c, m, y, k),
        // Es ist nicht erforderlich, einen weiteren Fall zu definieren, da alle Varianten überprüft wurden
    }
}

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Enums-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.