Menu
Coddy logo textTech

Componente de Texto

Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 50 de 61.

challenge icon

Desafio

Fácil

Com base na trait Draw que você criou na lição anterior, vamos adicionar nosso primeiro componente de UI real: um TextField. Este componente representará um elemento de exibição de texto em nosso sistema de documentos.

Você expandirá seu projeto com um novo arquivo de módulo:

  • draw.rs: Mantenha sua trait Draw do desafio anterior.
  • text_field.rs: Crie uma struct TextField com um campo público content (uma String). Implemente a trait Draw para TextField de modo que a chamada de draw() imprima o texto em um formato específico: Text: {content}
  • main.rs: Importe ambos os módulos e crie uma instância de TextField. Chame seu método draw() para renderizar o componente.

Lembre-se de que seu módulo text_field precisa usar a trait Draw do módulo draw. Você pode acessá-la com crate::draw::Draw, já que ambos os módulos fazem parte da mesma crate.

A seguinte entrada será fornecida:

  • Uma string representando o conteúdo do campo de texto

Sua saída deve seguir este formato exato:

Text: Hello World

Experimente você mesmo

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: Criar uma instância de TextField e chamar draw() nela
}

Todas as lições de Object Oriented Programming