Menu
Coddy logo textTech

Компонент Text

Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 50 из 61.

challenge icon

Задание

Легко

Опираясь на типаж Draw, который вы создали в предыдущем уроке, давайте добавим наш первый настоящий компонент пользовательского интерфейса: TextField. Этот компонент будет представлять собой элемент отображения текста в нашей системе документов.

Вы расширите свой проект новым файлом модуля:

  • draw.rs: Сохраните ваш типаж Draw из предыдущего задания.
  • text_field.rs: Создайте структуру TextField с публичным полем content (типа String). Реализуйте типаж Draw для TextField так, чтобы вызов draw() выводил текст в определенном формате: Text: {content}
  • main.rs: Подключите оба модуля и создайте экземпляр TextField. Вызовите его метод draw() для отрисовки компонента.

Помните, что вашему модулю text_field необходимо использовать типаж Draw из модуля draw. Вы можете получить к нему доступ через crate::draw::Draw, так как оба модуля являются частью одного и того же крейта.

Будут предоставлены следующие входные данные:

  • Строка, представляющая содержимое текстового поля

Ваш вывод должен соответствовать следующему формату:

Text: Hello World

Попробуйте сами

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: Создать экземпляр TextField и вызвать на нем метод draw()
}

Все уроки раздела Object Oriented Programming