Geneeriset tyypit toimivat Rustissa käsi kädessä traittien kanssa. Kun kuvailemme parametrisoitua tyyppiä T, voimme rajoittaa, mitä tyyppejä voidaan käyttää argumenttina, luettelemalla, mitä traitteja argumentin täytyy toteuttaa.
Tässä esimerkissä tyypin T täytyy toteuttaa Foo:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
Käyttämällä geneerisiä tyyppejä luomme käännösaikana staattisesti tyypitettyjä funktioita, joilla on tunnetut tyypit ja koot, minkä ansiosta voimme suorittaa staattista dispatchia ja tallentaa ne tunnetun kokoisena arvona.