Funcionalidades Modernas
Rust se ha creado a partir de toda la experiencia obtenida en las últimas décadas.
Características del Lenguaje
- Enumeraciones (Enums) y coincidencia de patrones.
- Genéricos
- Sin overhead de FFI.
- Abstracciones sin coste.
Herramientas
- Excelentes errores de compilación.
- Gestor de dependencias integrado.
- Asistencia integrada para pruebas.
- Compatibilidad excelente con el protocolo del servidor de lenguaje.
Puntos clave:
-
Las abstracciones sin coste, similares a las de C++, significan que no tienes que ‘pagar’ por construcciones de programación de alto nivel con memoria o CPU. Por ejemplo, escribir un bucle utilizando
for
debería dar como resultado prácticamente las mismas instrucciones de bajo nivel que con la construcción.iter().fold()
. -
Merece la pena mencionar que los enums de Rust son tipos de datos algebraicos, también denominados ‘tipos suma’, que permiten al sistema de tipos expresar cosas como
Option<T>
yResult<T, E>
. -
Recuerda a los alumnos que lean los errores, ya que muchos desarrolladores se han acostumbrado a ignorar los largos resultados del compilador. El compilador de Rust es mucho más comunicativo que otros. A menudo, te proporcionará sugerencias prácticas, que puedes copiar y pegar en tu código.
-
La biblioteca estándar de Rust es pequeña en comparación con la de lenguajes como Java, Python o Go. Rust no incluye elementos que se podrían considerar estándar o esenciales:
- un generador de números aleatorios, pero consulta rand.
- compatibilidad con SSL o TLS, pero consulta rusttls.
- Compatibilidad con JSON, pero consulta serde_json. La razón es que la funcionalidad de la biblioteca estándar no puede desaparecer, por lo que tiene que ser muy estable. En los ejemplos anteriores, la comunidad de Rust todavía está trabajando para encontrar la mejor solución, y puede que no exista una única “mejor solución” para algunas de estas cuestiones. Rust incluye un gestor de paquetes integrado con la forma de Cargo, lo que hace que resulte sencillo descargar y compilar crates de terceros. Como consecuencia, la biblioteca estándar puede ser más pequeña.
Encontrar buenos crates de terceros puede ser un problema. Sitios como https://lib.rs/ te ayudan a comparar métricas de salud de crates para encontrar uno bueno y fiable.
-
rust-analyzer es una implementación de LSP bien respaldada y utilizada en los principales IDE y editores de texto.