Das Zerlegen von Rust-Structs mit Mustermatching

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 lernst du, wie du in Rust structs zerlegen kannst, was es ermöglicht, einzelne Felder und deren Werte aus einem Struct mithilfe von Mustermatching zu extrahieren.

Hinweis: Wenn das Lab keinen Dateinamen angibt, kannst du einen beliebigen Dateinamen verwenden. Beispielsweise kannst du 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/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") subgraph Lab Skills rust/variable_declarations -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} rust/integer_types -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} rust/string_type -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} rust/function_syntax -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} rust/expressions_statements -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} rust/lifetime_specifiers -.-> lab-99314{{"Das Zerlegen von Rust-Structs mit Mustermatching"}} end

structs

Ähnlich kann ein struct wie folgt zerlegt werden:

fn main() {
    struct Foo {
        x: (u32, u32),
        y: u32,
    }

    // Versuche, die Werte im Struct zu ändern, um zu sehen, was passiert
    let foo = Foo { x: (1, 2), y: 3 };

    match foo {
        Foo { x: (1, b), y } => println!("Das erste von x ist 1, b = {},  y = {} ", b, y),

        // Du kannst Structs zerlegen und die Variablen umbenennen,
        // Die Reihenfolge ist nicht wichtig
        Foo { y: 2, x: i } => println!("y ist 2, i = {:?}", i),

        // und du kannst auch einige Variablen ignorieren:
        Foo { y,.. } => println!("y = {}, wir interessieren uns nicht für x", y),
        // Dies wird einen Fehler geben: Muster erwähnt kein Feld `x`
        //Foo { y } => println!("y = {}", y),
    }

    let faa = Foo { x: (1, 2), y: 3 };

    // Du brauchst keinen match-Block, um Structs zu zerlegen:
    let Foo { x : x0, y: y0 } = faa;
    println!("Außerhalb: x0 = {x0:?}, y0 = {y0}");
}

Zusammenfassung

Herzlichen Glückwunsch! Du hast das Structs-Lab abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.