Komponent tekstowy
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 50 z 61.
Wyzwanie
ŁatwyKontynuując pracę z cechą Draw, którą utworzyłeś w poprzedniej lekcji, dodajmy nasz pierwszy rzeczywisty komponent interfejsu użytkownika: TextField. Ten komponent będzie reprezentować element wyświetlający tekst w naszym systemie dokumentów.
Rozbudujesz swój projekt o nowy plik modułu:
draw.rs: Zachowaj cechęDrawz poprzedniego wyzwania.text_field.rs: Utwórz strukturęTextFieldz publicznym polemcontent(typuString). Zaimplementuj cechęDrawdlaTextField, tak aby wywołaniedraw()wypisywało tekst w określonym formacie:Text: {content}main.rs: Dołącz oba moduły i utwórz instancjęTextField. Wywołaj jej metodędraw(), aby wyrenderować komponent.
Pamiętaj, że moduł text_field musi używać cechy Draw z modułu draw. Możesz uzyskać do niej dostęp za pomocą crate::draw::Draw, ponieważ oba moduły należą do tego samego crate’a.
Dane wejściowe:
- Ciąg znaków reprezentujący zawartość pola tekstowego
Dane wyjściowe powinny mieć dokładnie następujący format:
Text: Hello WorldSpróbuj swoich sił
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: Utwórz instancję TextField i wywołaj na niej draw()
}Wszystkie lekcje w sekcji Programowanie obiektowe
1Metody i zachowanie
Wprowadzenie do bloków implementacjiParametr selfMetody modyfikująceFunkcje powiązaneWiele bloków implementacjiŁańcuchowe wywoływanie metodPowtórzenie — działania na prostokącie4Projekt: Wirtualne zwierzątko
Definiowanie zwierzątkaKarmienie zwierzątka7Standardowe cechy
Cecha DebugCecha DisplayClone i CopyCechy równościPowtórka – punkt do wydrukowania10Projekt: System dokumentów
Trait DrawKomponent tekstowy2Hermetyzacja i moduły
Podstawy modułówSłowo kluczowe publicPola prywatneGetterySetteryPodsumowanie — bezpieczna skrytka5Typy generyczne
Struktury generyczneMetody generyczneWiele typów generycznychFunkcje generycznePodsumowanie – punkt współrzędnych8Cechy jako ograniczenia
Składnia ograniczeń cechWiele ograniczeńKlauzula whereZwracanie typów z użyciem cechPodsumowanie — generyczna drukarka11Wzorce projektowe w Rust
Wzorzec NewtypeKompozycjaTrait DropFrom i IntoPodsumowanie — atrapowy inteligentny wskaźnik3Zaawansowane typy wyliczeniowe
Typy wyliczeniowe z danymiMetody typów wyliczeniowychDopasowywanie wariantów danychTyp wyliczeniowy Option — powtórzeniePodsumowanie — typ wyliczeniowy Shape6Definiowanie cech
Czym jest cecha?Implementowanie cechImplementacje domyślneNadpisywanie wartości domyślnychCechy z parametramiPowtórzenie — odtwarzacz multimedialnyPoćwicz samodzielnie: Kompilator Rust online