Ventajas de Rust
Estas son algunas de las ventajas competitivas de Rust:
-
Seguridad de la memoria durante el tiempo de compilación: se evitan clases completas de errores de memoria durante el tiempo de compilación
- No hay variables no inicializadas.
- No hay errores double free.
- No hay errores use-after-free.
- No hay punteros
NULL
. - No se olvidan las exclusiones mutuas bloqueadas.
- No hay condiciones de carrera de datos entre hilos.
- No se invalidan los iteradores.
-
No hay comportamientos indefinidos en el tiempo de ejecución: es decir, una instrucción de Rust nunca queda sin especificar
- Se comprueban los límites de acceso a los arrays.
- Se define el desbordamiento de enteros (panic o wrap-around).
-
Características de los lenguajes modernos: es tan expresivo y ergonómico como los lenguajes de nivel superior
- Enumeraciones (Enums) y coincidencia de patrones.
- Genéricos.
- Sin overhead de FFI.
- Abstracciones sin coste.
- Excelentes errores de compilación.
- Gestor de dependencias integrado.
- Asistencia integrada para pruebas.
- Compatibilidad excelente con el protocolo del servidor de lenguaje.
No le dediques mucho tiempo a este punto. Todos estos aspectos se tratarán de forma más detallada más adelante.
Asegúrate de preguntar a la clase en qué lenguajes tienen experiencia. Dependiendo de la respuesta puedes destacar diferentes características de Rust:
-
Experiencia con C o C++: Rust elimina una clase completa de errores de runtime mediante el borrow checker. Obtienes un rendimiento similar al de C y C++, pero no tienes problemas de seguridad en la memoria. Además, obtienes un lenguaje moderno con elementos como la coincidencia de patrones y la gestión de dependencias integrado.
-
Experiencia con Java, Go, Python, JavaScript, etc.: Consigues la misma seguridad de memoria que en éstos lenguajes, además de una experiencia similar a la de un lenguaje de alto nivel. También consigues un rendimiento rápido y predecible como en C y C++ (sin recolector de memoria residual), así como acceso a hardware de bajo nivel (si lo necesitas).