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

Потренируйтесь самостоятельно: Онлайн-компилятор Rust