Menu
Coddy logo textTech

Componente de texto

Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 50 de 61.

challenge icon

Desafío

Fácil

Basándonos en el trait Draw que creaste en la lección anterior, vamos a añadir nuestro primer componente de interfaz de usuario real: un TextField. Este componente representará un elemento de visualización de texto en nuestro sistema de documentos.

Ampliarás tu proyecto con un nuevo archivo de módulo:

  • draw.rs: Mantén tu trait Draw del desafío anterior.
  • text_field.rs: Crea una estructura TextField con un campo público content (un String). Implementa el trait Draw para TextField de modo que al llamar a draw() se imprima el texto en un formato específico: Text: {content}
  • main.rs: Incorpora ambos módulos y crea una instancia de TextField. Llama a su método draw() para renderizar el componente.

Recuerda que tu módulo text_field necesita usar el trait Draw del módulo draw. Puedes acceder a él con crate::draw::Draw ya que ambos módulos forman parte del mismo crate.

Se proporcionará la siguiente entrada:

  • Una cadena que representa el contenido del campo de texto

Tu salida debe seguir este formato exacto:

Text: Hello World

Pruébalo tú mismo

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: Crear una instancia de TextField y llamar a draw() en ella
}

Todas las lecciones de Object Oriented Programming