Menu
Coddy logo textTech

Composant texte

Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 50 sur 61.

challenge icon

Défi

Facile

En 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 trait Draw du défi précédent.
  • text_field.rs : Créez une structure TextField avec un champ public content (un String). Implémentez le trait Draw pour TextField de 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 de TextField. Appelez sa méthode draw() 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 World

Essayez 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