I generici in Rust lavorano di pari passo con i trait. Quando descriviamo un tipo parametrizzato T, possiamo limitare quali tipi possono essere usati come argomento, elencando quali trait l'argomento deve implementare.
In questo esempio, il tipo T deve implementare Foo:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
Usando i generici, creiamo a tempo di compilazione funzioni tipizzate staticamente con tipi e dimensioni noti, il che ci permette di fare dispatch statico e di memorizzarle come valore di dimensione nota.