I generici in Rust lavorano di pari passo con i tratti. Quando descriviamo a tipo parametrizzato "T" possiamo limitare quali tipi può essere utilizzato come argomento elencando i tratti richiesti dall'argomento strumento.
In questo esempio il tipo "T" deve implementare il tratto "Foo":
fn mia_funzione<T>(foo: T)
where
T:Foo
{
...
}
Utilizzando i generici creiamo funzioni tipizzate statiche in fase di compilazione che lo faranno hanno tipologie e dimensioni conosciute, permettendocelo eseguire l'invio statico e archiviarlo come valore dimensionato.