Le trait Draw
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 49 sur 61.
Défi
FacileCommençons à construire un système de documents ! Dans ce projet, vous allez créer un framework flexible pour le rendu de composants d'interface utilisateur (UI) en utilisant des objets de trait. La base commence par la définition d'un trait Draw dans son propre fichier de module.
Vous allez créer deux fichiers pour organiser votre code :
draw.rs: Définissez un trait publicDrawavec une seule méthode appeléedrawqui prend&selfet affiche une sortie. Ce trait servira de contrat que tous les composants UI devront respecter.main.rs: Importez votre moduledrawet créez une structure simple appeléeLabelavec un champ publictext(unString). Implémentez le traitDrawpourLabelde sorte que l'appel àdraw()affiche le texte du label.
Dans votre fonction principale, créez une instance de Label et appelez sa méthode draw() pour afficher le texte.
L'entrée suivante sera fournie :
- Une chaîne de caractères représentant le texte du label
Votre sortie doit être exactement le texte du label 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 Object Oriented Programming
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édia