Découpage et utilisation des énumérations en Rust

RustRustBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous avons du code qui démontre l'utilisation des énumérations en Rust, y compris la manière de décomposer une énumération à l'aide d'une instruction match et d'accéder aux valeurs associées en fonction de la variante d'énumération.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec rustc main.rs &&./main.


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{{"Découpage et utilisation des énumérations en Rust"}} rust/integer_types -.-> lab-99312{{"Découpage et utilisation des énumérations en Rust"}} rust/function_syntax -.-> lab-99312{{"Découpage et utilisation des énumérations en Rust"}} rust/expressions_statements -.-> lab-99312{{"Découpage et utilisation des énumérations en Rust"}} rust/lifetime_specifiers -.-> lab-99312{{"Découpage et utilisation des énumérations en Rust"}} rust/method_syntax -.-> lab-99312{{"Découpage et utilisation des énumérations en Rust"}} end

énumérations

Une enum est décomposée de manière similaire :

// `allow` est requis pour supprimer les avertissements car seul
// une variante est utilisée.
#[allow(dead_code)]
enum Couleur {
    // Ces 3 sont spécifiées uniquement par leur nom.
    Rouge,
    Bleu,
    Vert,
    // Elles lient également des tuples `u32` à différents noms : modèles de couleur.
    RGB(u32, u32, u32),
    HSV(u32, u32, u32),
    HSL(u32, u32, u32),
    CMY(u32, u32, u32),
    CMYK(u32, u32, u32, u32),
}

fn main() {
    let couleur = Couleur::RGB(122, 17, 40);
    // TODO ^ Essayez différentes variantes pour `couleur`

    println!("Quelle est la couleur?");
    // Une `enum` peut être décomposée à l'aide d'un `match`.
    match couleur {
        Couleur::Rouge   => println!("La couleur est Rouge!"),
        Couleur::Bleu  => println!("La couleur est Bleu!"),
        Couleur::Vert => println!("La couleur est Verte!"),
        Couleur::RGB(r, g, b) =>
            println!("Rouge : {}, vert : {}, et bleu : {}!", r, g, b),
        Couleur::HSV(h, s, v) =>
            println!("Teinte : {}, saturation : {}, valeur : {}!", h, s, v),
        Couleur::HSL(h, s, l) =>
            println!("Teinte : {}, saturation : {}, luminosité : {}!", h, s, l),
        Couleur::CMY(c, m, y) =>
            println!("Cyan : {}, magenta : {}, jaune : {}!", c, m, y),
        Couleur::CMYK(c, m, y, k) =>
            println!("Cyan : {}, magenta : {}, jaune : {}, clé (noir) : {}!",
                c, m, y, k),
        // Pas besoin d'un autre bras car toutes les variantes ont été examinées
    }
}

Sommaire

Félicitations ! Vous avez terminé le laboratoire sur les énumérations. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.