Le trait Draw
Fait partie de la section Programmation Orientée Objet du Journey Rust de Coddy. Leçon 49 sur 61.
Défi
FacileCommençons à construire un système de documents ! Dans ce projet, tu vas créer un framework flexible pour afficher des composants d’interface utilisateur à l’aide d’objets de trait. La base consiste à définir un trait Draw dans son propre fichier de module.
Tu vas créer deux fichiers pour organiser ton code :
draw.rs: définis un trait publicDrawavec une seule méthode appeléedraw, qui prend&selfet affiche une sortie. Ce trait servira de contrat que tous les composants d’interface utilisateur devront respecter.main.rs: importe ton moduledrawet crée une structure simple appeléeLabelavec un champ publictext(unString). Implémente le traitDrawpourLabelafin que l’appel àdraw()affiche le texte de l’étiquette.
Dans ta fonction principale, crée une instance de Label et appelle sa méthode draw() pour afficher le texte.
L’entrée suivante sera fournie :
- Une chaîne représentant le texte de l’étiquette
Ta sortie doit être exactement le texte de l’étiquette sur une seule ligne.
Essayez vous-même
mod draw;
use draw::Draw;
// TODO: Définir une structure publique appelée Label avec un champ text public (String)
// TODO: Implémenter le trait Draw pour Label
// La méthode draw doit afficher le texte du label
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: Créer une instance de Label avec le texte saisi
// TODO: Appeler la méthode draw() sur le label
}
Toutes les leçons de Programmation Orientée Objet
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédiaEntraînez-vous par vous-même : Compilateur Rust en ligne