Los genéricos y los traits trabajan codo con codo en Rust. Cuando describimos un tipo parametrizado T
podemos restringir qué tipos pueden se pueden usar como argumento listando los traits requeridos que debe implementar el argumento.
En este ejemplo, el tipo T
debe implementar el trait Foo
:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
Al crear una función estática, el sistema sabrá de antemano cuanta memoria reservar para esta acción, la cual quedará almacenada en un espacio con el tamaño adecuado y no lo resolverá de forma dinámica.