Introduzione ai Generics in Rust

Mattepuffo's logo
Introduzione ai Generics in Rust

Introduzione ai Generics in Rust

I Generics ci permettono di parametrizzare le strutture dati e i traits (che vedermo in seguito) per avere un codice più pulito e sicuro.

Oggi vediamo come usarli in Rust.

Partiamo da un esempio basico, applicando un tipo da un Vector:

fn main() {
    let mut vec: Vec<i32> = vec![1, 2];
    println!("{:?}", vec);
    vec.push(3);
    println!("{:?}", vec);
}

Se provate ad inserire un altro item di un altro tipo, ad esempio stringa, il programma andrà in errore.

In nell'esempio qui sotto vediamo come creare un struct tipizzata:

struct MyData<T> {
    valore: T,
}

fn main() {
    let mut vec: Vec<i32> = vec![1, 2];
    println!("{:?}", vec);
    vec.push(3);
    println!("{:?}", vec);

    let t: MyData<i32> = MyData { valore: 350 };
    println!("value is :{} ", t.valore);

    let t2: MyData<String> = MyData { valore: "Tom".to_string() };
    println!("value is :{} ", t2.valore);
}

Come vedete la richiamiamo due volte, passandogli tipi diversi.

Infine vediamo come possiamo applicare i Generics alle funzioni:

use std::fmt::Display;

fn main() {
    print_gen(10 as i32);
    print_gen("Matteo");
}

fn print_gen<T: Display>(t: T) {
    println!("{}", t);
}

Enjoy!


Condividi

Commentami!