Lección 17 / 20

Genéricos

En esta lección escribirás una función que funciona con varios tipos sin duplicar el código.

<T> declara un tipo genérico, un hueco que se rellena al llamar a la función. Los dos puntos añaden restricciones: T: PartialOrd + Copy significa «cualquier tipo que se pueda comparar y copiar».

El código de ejemplo recorre una lista y devuelve el mayor de sus elementos. La misma función sirve para enteros y para decimales.

Esas restricciones son la parte que hay que entender. Sin PartialOrd, el compilador rechaza la comparación item > result, porque no todos los tipos posibles saben compararse. Puede resultar pesado al principio, pero el error aparece al escribir la función genérica, no cuando alguien la usa con un tipo raro seis meses después.

Y no se paga nada por ello en velocidad: Rust genera en tiempo de compilación una versión especializada de la función para cada tipo con el que se usa. Es lo que se llama monomorfización, y hace que un genérico corra exactamente igual de rápido que si lo hubieras escrito a mano para ese tipo.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Rust directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

Espacio publicitario (banner)
Espacio publicitario (en el artículo)