Unsafe Rust

El lenguaje Rust tiene dos partes:

  • Safe Rust: memoria segura, sin posibilidad de comportamiento indefinido.
  • Unsafe Rust: puede activar un comportamiento no definido si se infringen las condiciones previas.

En este curso, casi todo lo que veremos es Safe Rust, aunque es importante saber qué es Unsafe Rust.

Por lo general, el código inseguro es pequeño y está aislado, y su corrección debe estar bien documentada. Suele estar envuelto en una capa de abstracción segura.

Rust inseguro te permite acceder a cinco nuevas funciones:

  • Desreferenciar punteros sin formato.
  • Acceder o modificar variables estáticas mutables.
  • Acceder a los campos union.
  • Llamar a funciones unsafe, incluidas las funciones extern.
  • Implementar traits unsafe.

A continuación, hablaremos brevemente sobre las funciones que no son seguras. Para obtener más información, consulta el capítulo 19.1 del Libro de Rust y el documento Rustonomicon.

Unsafe Rust no significa que el código sea incorrecto. Significa que los desarrolladores han desactivado las funciones de seguridad del compilador y que tienen que escribir el código correcto por su cuenta. Significa que el compilador ya no aplica las reglas de seguridad de memoria de Rust.