Компонент Text
Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 50 из 61.
Задание
ЛегкоОпираясь на типаж 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
1Методы и поведение
Введение в блоки реализацииПараметр SelfИзменяемые методыАссоциированные функцииНесколько блоков реализацииЦепочки вызовов методовИтоги: действия с Rectangle4Проект: Виртуальный питомец
Определение питомцаКормление питомца2Инкапсуляция и модули
Основы модулейКлючевое слово PublicПриватные поляГеттерыСеттерыИтоги — Безопасный сейф5Обобщения
Обобщённые структурыОбобщённые методыНесколько обобщённых типовОбобщённые функцииПовторение — Координатная точка8Трейты как ограничения
Синтаксис ограничений трейтовМножественные ограниченияКонструкция whereВозврат типов с трейтамиИтоги — Обобщённый принтер11Паттерны проектирования в Rust
Паттерн NewtypeКомпозицияТрейт DropFrom и IntoИтоги — Мок-объект Smart Pointer3Продвинутые перечисления
Перечисления с даннымиМетоды в перечисленияхСопоставление вариантов с даннымиСнова об Option EnumИтоги — перечисление Shape6Определение трейтов
Что такое трейт?Реализация трейтовРеализации по умолчаниюПереопределение реализаций по умолчаниюТрейты с параметрамиИтоги — Media Player