Menu
Coddy logo textTech

Komponent tekstowy

Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 50 z 61.

challenge icon

Wyzwanie

Łatwy

Kontynuują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ę Draw z poprzedniego wyzwania.
  • text_field.rs: Utwórz strukturę TextField z publicznym polem content (typu String). Zaimplementuj cechę Draw dla TextField, tak aby wywołanie draw() 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 World

Spró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

Poćwicz samodzielnie: Kompilator Rust online