Tratti ruggine

Tratti ruggine

Un tratto si riferisce a un gruppo di metodi definiti per un tipo specifico. I tratti sono incredibili in quanto forniscono un'astrazione per la funzionalità e la logica che può essere condivisa tra più tipi.

I tratti supportano metodi concreti e astratti, come vedremo in questo articolo.

La ruggine definisce il tratto

Per definire un tratto in ruggine, usiamo la parola chiave del tratto, seguita dal nome e dal corpo del tratto. Il corpo del tratto può contenere un metodo in cemento o astratto.

La sintassi è come mostrata:

traittraitname
fnabs_method (& self);
fncon_method (& self)
// Function Body

Si noti che un metodo di tratto include il parametro. Questo deve essere il primo parametro nel metodo e altri parametri devono essere forniti dopo.

Tratto Info
FN Descrizione (& self) -> String;
miglia fn (& self) -> f64;

Nel codice sopra, definiamo uno stretto chiamato Info che contiene metodi astratti. Un oggetto auto può utilizzare i metodi sopra. Tuttavia, poiché il metodo di descrizione e i valori di chilometraggio possono differire a seconda dell'auto, la logica deve essere applicata distintamente.

Tratto di implementazione della ruggine

Dopo aver definito un tratto, possiamo aver bisogno di implementarlo. La sintassi per l'implementazione del metodo del tratto è simile a un metodo struct.

Considera l'esempio seguente:

traitinfo
fndescription (& self) -> string;
fnmileage (& self) -> f64;

structVehicle
Modello: stringa,
Produttore: stringa,
Prezzo: i32

Impl informazioni per il veicolo
fndescription (& self) -> string
ReturnFormat!("Modello: , produttore: , prezzo: ", self.Modello, sé.produttore, sé.prezzo);

fnmileage (& self) -> f64
return10000.33;

Nell'esempio sopra, definiamo una struttura che contiene informazioni per un veicolo. Possiamo quindi implementare metodi, come mostrato sopra.

Nella funzione principale, possiamo avere istanze per le strutture del veicolo come mostrato:

fnMain ()
let car = veicolo
Modello: "Camry".accordare(),
Produttore: "Toyota".accordare(),
Prezzo: 25295
;
let motociclette = veicolo
Modello: "V-Max".accordare(),
Produttore: "Yamaha".accordare(),
Prezzo: 27999
;

Nel codice sopra, definiamo due istanze della struttura del veicolo con le proprietà implementate in modo diverso.

Chiamando metodi di tratto

Una volta implementati i metodi per un tratto, possiamo chiamare il metodo usando la notazione punto come mostrato:

println!("", auto.descrizione());

Questo dovrebbe tornare:

Modello: Camry, produttore: Toyota, Prezzo: 25295

Conclusione

Questa guida fornisce i fondamentali per lavorare con i tratti nel linguaggio della ruggine. Considera la documentazione per saperne di più.