Avec Rust les génériques vont de pair avec les traits. Lorsqu'un paramètre
de fonction est un type paramétré T
, le compilateur contraint les types qui
peuvent être utilisés comme argument de la fonction. Le mot-clé where
permet
de lister les traits que l'argument doit implémenter.
Dans cet exemple, le type T
doit implémenter le traitFoo
:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
En utilisant des génériques, nous créons des fonctions statiquement typées au moment de la compilation dont le type et la taille seront connus. Cela nous permet d'effectuer un dispatch statique et de stocker des valeurs dont la taille est connue.