Héritage et composition de traits 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 explorons comment définir des traits en Rust comme des superensembles d'autres traits, permettant d'implémenter plusieurs traits à travers des sous-traits.

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.

Supertraits

Rust n'a pas d'"héritage", mais vous pouvez définir un trait comme étant un superensemble d'un autre trait. Par exemple :

trait Person {
    fn name(&self) -> String;
}

// Person est un supertrait de Student.
// Implémenter Student nécessite également d'implémenter Person.
trait Student: Person {
    fn university(&self) -> String;
}

trait Programmer {
    fn fav_language(&self) -> String;
}

// CompSciStudent (étudiant en informatique) est un sous-trait à la fois de Programmer
// et de Student. Implémenter CompSciStudent nécessite d'implémenter les deux supertraits.
trait CompSciStudent: Programmer + Student {
    fn git_username(&self) -> String;
}

fn comp_sci_student_greeting(student: &dyn CompSciStudent) -> String {
    format!(
        "My name is {} and I attend {}. My favorite language is {}. My Git username is {}",
        student.name(),
        student.university(),
        student.fav_language(),
        student.git_username()
    )
}

fn main() {}

Résumé

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