Os genéricos no Rust trabalham lado a lado com as traits. Quando descrevemos um tipo parametrizado T
, podemos restringir quais tipos podem ser usados como argumento listando as traits necessárias que o argumento deve implementar.
Neste exemplo o tipo T
deve implementar a trait Foo
:
fn minha_funcao<T>(foo: T)
where
T:Foo
{
...
}
Usando genéricos criamos funções tipadas estáticas em tempo de compilação que terão tipos e tamanhos conhecidos, permitindo executar dispatchs estáticos e armazená-lo como um valor dimensionado.