Trait Draw
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 49 z 61.
Wyzwanie
ŁatwyRozpocznijmy budowanie systemu dokumentów! W tym projekcie utworzysz elastyczny framework do renderowania komponentów interfejsu użytkownika za pomocą obiektów cech. Podstawą będzie zdefiniowanie cechy Draw w osobnym pliku modułu.
Utworzysz dwa pliki, aby uporządkować kod:
draw.rs: Zdefiniuj publiczną cechęDrawz jedną metodą o nazwiedraw, która przyjmuje&selfi wyświetla tekst. Ta cecha będzie określać wymagania, które muszą spełniać wszystkie komponenty interfejsu użytkownika.main.rs: Dołącz modułdrawi utwórz prostą strukturę o nazwieLabelz publicznym polemtext(typuString). Zaimplementuj cechęDrawdlaLabel, tak aby wywołaniedraw()wyświetlało tekst etykiety.
W funkcji main utwórz instancję Label i wywołaj jej metodę draw(), aby wyświetlić tekst.
Dane wejściowe będą miały następującą postać:
- Ciąg znaków reprezentujący tekst etykiety
Wynikiem powinien być dokładnie tekst etykiety w jednym wierszu.
Spróbuj swoich sił
mod draw;
use draw::Draw;
// TODO: Zdefiniuj publiczną strukturę o nazwie Label z publicznym polem text (String)
// TODO: Zaimplementuj cechę Draw dla Label
// Metoda draw powinna wypisywać tekst etykiety
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: Utwórz instancję Label z tekstem wejściowym
// TODO: Wywołaj metodę draw() na etykiecie
}
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