Se sei interessato a esplorare più argomenti di ruggine, controlla la nostra lista di ruggine per saperne di più.
Il parametro
Quando si dichiara tipi generici, troverai il parametro. È usato per rappresentare qualsiasi tipo di dati in ruggine:
Un esempio del parametro di tipo in una funzione è un mostrato:
fn my_functionQuanto sopra definisce una funzione generica che prende un argomento t di qualsiasi tipo.
È possibile definire più parametri generici separandoli con le virgole:
fn my_functionNella sintassi sopra, definiamo più parametri generici, t, u, v. Sebbene non richiesto, è comune trovare tipi generici a partire da T e incrementare l'alfabeto.
Rust Defining Generic Struct
Possiamo definire una struttura generica come mostrato nella sintassi seguente:
struct structnamePrendi l'esempio, struct definito di seguito:
Strutture MystructQuanto sopra crea una struttura generica con due parametri. All'interno della struttura, specifichiamo due membri della struttura di tipo T e u. Poiché T e U sono tipi generici, possono essere di qualsiasi tipo.
Funzioni generiche
Lo stesso costrutto può essere applicato alle funzioni e al metodo. Se una funzione prende il tipo, si dice che sia una funzione generica.
La definizione della funzione generica è come mostrato:
fn func_namePrendi l'esempio della definizione della funzione generica di seguito:
fn genericoIn questo esempio, abbiamo una funzione generica che prende qualsiasi tipo e la stampa alla console. Tuttavia, l'esecuzione del codice sopra causerà un errore.
Dal momento che stiamo usando un parametro generico, dobbiamo implementare il tratto di visualizzazione o debug per stamparlo. Possiamo perfezionare il codice come:
Usa std :: fmt :: debug;In questo caso, importiamo il tratto di debug e lo utilizziamo per il tipo generico. Possiamo quindi stampare il valore usando il segnaposto del tratto di debug: :?
Lo stesso caso si applica se una funzione deve eseguire qualsiasi tipo di operazione. Prendi la funzione di esempio di seguito che restituisce 0 se un valore è uniforme e 1 se altrimenti.
fn even_oddSe chiamiamo la funzione sopra, restituirà un errore. Dobbiamo implementare il tratto REM affinché funzioni come:
Usa std :: ops :: rem;I tratti REM e EQ consentono di utilizzare l'operatore rimanente ed eseguire un confronto logico.
Conclusione
In questo articolo, abbiamo esplorato i fondamenti del lavoro con tipi generici nel linguaggio ruggine. Controlla i documenti per saperne di più.