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.
This slide should take about 3 minutes.

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).