Composant texte
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 50 sur 61.
Défi
FacileEn vous appuyant sur le trait Draw que vous avez créé dans la leçon précédente, ajoutons notre premier véritable composant d'interface utilisateur : un TextField. Ce composant représentera un élément d'affichage de texte dans notre système de documents.
Vous allez étendre votre projet avec un nouveau fichier de module :
draw.rs: Conservez votre traitDrawdu défi précédent.text_field.rs: Créez une structureTextFieldavec un champ publiccontent(unString). Implémentez le traitDrawpourTextFieldde sorte que l'appel àdraw()affiche le texte dans un format spécifique :Text: {content}main.rs: Importez les deux modules et créez une instance deTextField. Appelez sa méthodedraw()pour effectuer le rendu du composant.
N'oubliez pas que votre module text_field doit utiliser le trait Draw du module draw. Vous pouvez y accéder avec crate::draw::Draw puisque les deux modules font partie de la même crate.
L'entrée suivante sera fournie :
- Une chaîne de caractères représentant le contenu du champ de texte
Votre sortie doit suivre exactement ce format :
Text: Hello WorldEssayez vous-même
mod draw;
mod text_field;
use draw::Draw;
pub struct Label {
pub text: String,
}
impl Draw for Label {
fn draw(&self) {
println!("{}", self.text);
}
}
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let content = input.trim().to_string();
// TODO : Créer une instance de TextField et appeler draw() dessus
}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