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édiaEntraînez-vous par vous-même : Compilateur Rust en ligne