Menu
Coddy logo textTech

Componente de Texto

Parte da seção Programação Orientada a Objetos do Journey de Rust da Coddy. Lição 50 de 61.

challenge icon

Desafio

Fácil

Com base no trait Draw que você criou na lição anterior, vamos adicionar nosso primeiro componente de UI real: um TextField. Esse 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 seu trait Draw do desafio anterior.
  • text_field.rs: crie uma struct TextField com um campo público content (um String). Implemente o trait Draw para TextField para que chamar draw() imprima o texto em um formato específico: Text: {content}
  • main.rs: inclua 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 o trait Draw do módulo draw. Você pode acessá-lo com crate::draw::Draw, pois ambos os módulos fazem parte do mesmo crate.

A seguinte entrada será fornecida:

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

Sua saída deve seguir exatamente este formato:

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 Programação Orientada a Objetos

Pratique por conta própria: Compilador de Rust online