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!
rust generics struct vector
Commentami!