Exploration des multiples contraintes 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, le code illustre le concept de multiples contraintes en Rust, où un seul type peut avoir plusieurs contraintes appliquées en utilisant l'opérateur +.

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/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading") subgraph Lab Skills rust/variable_declarations -.-> lab-99350{{"Exploration des multiples contraintes en Rust"}} rust/function_syntax -.-> lab-99350{{"Exploration des multiples contraintes en Rust"}} rust/expressions_statements -.-> lab-99350{{"Exploration des multiples contraintes en Rust"}} rust/operator_overloading -.-> lab-99350{{"Exploration des multiples contraintes en Rust"}} end

Multiple contraintes

Des multiples contraintes pour un seul type peuvent être appliquées avec un +. Comme d'habitude, différents types sont séparés par ,.

use std::fmt::{Debug, Display};

fn compare_prints<T: Debug + Display>(t: &T) {
    println!("Debug: `{:?}`", t);
    println!("Display: `{}`", t);
}

fn compare_types<T: Debug, U: Debug>(t: &T, u: &U) {
    println!("t: `{:?}`", t);
    println!("u: `{:?}`", u);
}

fn main() {
    let string = "words";
    let array = [1, 2, 3];
    let vec = vec![1, 2, 3];

    compare_prints(&string);
    //compare_prints(&array);
    // TODO ^ Essayez de décommenter cela.

    compare_types(&array, &vec);
}

Sommaire

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