Text-Komponente
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 50 von 61.
Aufgabe
EinfachAufbauend auf dem Draw-Trait, den Sie in der vorherigen Lektion erstellt haben, fügen wir nun unsere erste echte UI-Komponente hinzu: ein TextField. Diese Komponente wird ein Textanzeigeelement in unserem Dokumentensystem darstellen.
Sie werden Ihr Projekt um eine neue Moduldatei erweitern:
draw.rs: Behalten Sie IhrenDraw-Trait aus der vorherigen Herausforderung bei.text_field.rs: Erstellen Sie einTextField-Struct mit einem öffentlichencontent-Feld (einString). Implementieren Sie denDraw-Trait fürTextField, sodass der Aufruf vondraw()den Text in einem spezifischen Format ausgibt:Text: {content}main.rs: Binden Sie beide Module ein und erstellen Sie eineTextField-Instanz. Rufen Sie derendraw()-Methode auf, um die Komponente zu rendern.
Denken Sie daran, dass Ihr text_field-Modul den Draw-Trait aus dem draw-Modul verwenden muss. Sie können darauf mit crate::draw::Draw zugreifen, da beide Module Teil desselben Crates sind.
Die folgende Eingabe wird bereitgestellt:
- Ein String, der den Inhalt des Textfeldes darstellt
Ihre Ausgabe sollte genau diesem Format folgen:
Text: Hello WorldProbier es selbst
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: Erstelle eine TextField-Instanz und rufe draw() darauf auf
}Alle Lektionen in Object Oriented Programming
1Methoden und Verhalten
Einführung in ImplementierungsblöckeDer Self-ParameterVeränderliche MethodenAssoziierte FunktionenMehrere ImplementierungsblöckeMethod ChainingRückblick – Rechteck-Aktionen4Projekt: Virtuelles Haustier
Das Haustier definierenDas Haustier füttern7Standard-Traits
Das Debug-TraitDas Display-TraitClone und CopyGleichheits-TraitsZusammenfassung – Druckbarer Punkt10Projekt: Dokumentensystem
Das Draw-TraitText-Komponente2Kapselung und Module
Grundlagen der ModuleDas Public-SchlüsselwortPrivate FelderGetterSetterWiederholung – Sicherer Tresor5Generics
Generische StructsGenerische MethodenMehrere generische TypenGenerische FunktionenZusammenfassung - Koordinatenpunkt8Traits als Einschränkungen
Syntax für Trait BoundsMehrfache BoundsDie Where-KlauselTypen mit Traits zurückgebenRückblick – Generischer Drucker11Design Patterns in Rust
Newtype-PatternKompositionDas Drop-TraitFrom und IntoZusammenfassung – Smart Pointer Mock3Fortgeschrittene Enums
Enums mit DatenMethoden für EnumsMatching von DatenvariantenDas Option-Enum erneut betrachtetZusammenfassung – Shape-Enum6Definition von Traits
Was ist ein Trait?Traits implementierenStandardimplementierungenStandardimplementierungen überschreibenTraits mit ParameternZusammenfassung – Media Player