Das Draw-Trait
Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 49 von 61.
Aufgabe
EinfachBeginnen wir mit dem Aufbau eines Dokumentensystems! In diesem Projekt erstellst du ein flexibles Framework zum Rendern von UI-Komponenten mithilfe von Trait-Objekten. Die Grundlage beginnt mit der Definition eines Draw-Traits in einer eigenen Moduldatei.
Du erstellst zwei Dateien, um deinen Code zu organisieren:
draw.rs: Definiere ein öffentlichesDraw-Trait mit einer einzigen Methode namensdraw, die&selfentgegennimmt und eine Ausgabe ausgibt. Dieses Trait dient als Vertrag, den alle UI-Komponenten erfüllen müssen.main.rs: Binde deindraw-Modul ein und erstelle eine einfache Struktur namensLabelmit einem öffentlichen Feldtext(einString). Implementiere dasDraw-Trait fürLabel, sodass der Aufruf vondraw()den Text des Labels ausgibt.
Erstelle in deiner Main-Funktion eine Label-Instanz und rufe ihre draw()-Methode auf, um den Text anzuzeigen.
Die folgende Eingabe wird bereitgestellt:
- Eine Zeichenkette, die den Text des Labels darstellt
Deine Ausgabe sollte genau dem Text des Labels in einer einzigen Zeile entsprechen.
REQUIRED OUTPUT FORMAT:Probier es selbst
mod draw;
use draw::Draw;
// TODO: Definiere ein öffentliches struct namens Label mit einem öffentlichen text-Feld (String)
// TODO: Implementiere das Draw-Trait für Label
// Die draw-Methode sollte den Text des Labels ausgeben
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: Erstelle eine Label-Instanz mit dem eingegebenen Text
// TODO: Rufe die draw()-Methode für das Label auf
}
Alle Lektionen in Objektorientierte Programmierung
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Übe selbstständig: Online-Rust-Compiler