Il trait Draw
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 49 di 61.
Sfida
FacileCominciamo a costruire un sistema di documenti! In questo progetto creerai un framework flessibile per il rendering dei componenti UI usando oggetti trait. Le basi partono dalla definizione di un trait Draw nel suo file di modulo.
Creerai due file per organizzare il codice:
draw.rs: Definisci un trait pubblicoDrawcon un solo metodo chiamatodrawche prende&selfe stampa l'output. Questo trait fungerà da contratto che tutti i componenti UI devono rispettare.main.rs: Importa il tuo modulodrawe crea una semplice struct chiamataLabelcon un campo pubblicotext(unaString). Implementa il traitDrawperLabel, in modo che chiamaredraw()stampi il testo dell'etichetta.
Nella funzione principale, crea un'istanza di Label e chiama il suo metodo draw() per visualizzare il testo.
Verrà fornito il seguente input:
- Una stringa che rappresenta il testo dell'etichetta
L'output deve essere esattamente il testo dell'etichetta su una singola riga.
Provalo tu
mod draw;
use draw::Draw;
// TODO: Definisci una struct pubblica chiamata Label con un campo text pubblico (String)
// TODO: Implementa il trait Draw per Label
// Il metodo draw deve stampare il testo dell'etichetta
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: Crea un'istanza di Label con il testo di input
// TODO: Chiama il metodo draw() sull'etichetta
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Metodi e comportamento
Introduzione ai blocchi implIl parametro selfMetodi mutabiliFunzioni associateBlocchi impl multipliConcatenamento di metodiRiepilogo - Azioni sul rettangolo4Progetto: animale domestico virtuale
Definire l'animaleNutrire l'animale7Trait standard
Il trait DebugIl trait DisplayClone e CopyTrait di uguaglianzaRiepilogo - Punto stampabile10Progetto: sistema di documenti
Il trait DrawComponente di testo2Incapsulamento e moduli
Nozioni di base sui moduliLa parola chiave publicCampi privatiGetterSetterRiepilogo - Armadietto sicuro5Generics
Struct genericheMetodi genericiPiù tipi genericiFunzioni genericheRipasso - Punto di coordinate8I Trait come vincoli
Sintassi dei vincoli sui traitVincoli multipliLa clausola whereRestituire tipi con i traitRiepilogo - Stampante generica11Modelli di progettazione in Rust
Pattern NewtypeComposizioneIl trait DropFrom e IntoRipasso - Mock con smart pointer3Enumerazioni avanzate
Enumerazioni con datiMetodi sulle enumerazioniCorrispondenza delle varianti con datiL'enumerazione Option ripresaRiepilogo - enumerazione Shape6Definizione dei trait
Che cos’è un trait?Implementare i traitImplementazioni predefiniteSovrascrivere le implementazioni predefiniteTrait con parametriRiepilogo - Lettore multimedialeEsercitati da solo: Compilatore Rust online