Introducción a Android Rust

La plataforma Android brinda soporte para desarrollar componentes nativos del sistema operativo en Rust, un lenguaje de programación de sistemas moderno que brinda garantías de seguridad de la memoria con un rendimiento equivalente a C/C++. Rust utiliza una combinación de comprobaciones en tiempo de compilación que imponen la vida útil y la propiedad del objeto, y comprobaciones en tiempo de ejecución que garantizan accesos válidos a la memoria, eliminando así la necesidad de un recolector de elementos no utilizados.

Rust proporciona una gama de funciones de lenguaje moderno que permiten a los desarrolladores ser más productivos y seguros en su código:

  • Programación concurrente segura : la facilidad con la que esto permite a los usuarios escribir código eficiente y seguro para subprocesos ha dado lugar al eslogan Fearless Concurrency de Rust.
  • Sistema de tipos expresivos : Rust ayuda a prevenir errores de programación lógica al permitir tipos altamente expresivos (como envoltorios Newtype y variantes de enumeración con contenido).
  • Verificaciones más fuertes en tiempo de compilación : más errores detectados en tiempo de compilación aumentan la confianza del desarrollador de que cuando el código se compila correctamente, funciona según lo previsto.
  • Marco de prueba integrado: Rust proporciona un marco de prueba integrado donde las pruebas unitarias se pueden colocar junto con la implementación que prueban, lo que facilita la inclusión de las pruebas unitarias.
  • Cumplimiento del manejo de errores : las funciones con fallas recuperables pueden devolver un tipo de resultado , que será una variante de éxito o una variante de error. El compilador requiere que las personas que llaman verifiquen y manejen la variante de error de una enumeración de Result devuelta por una llamada de función. Esto reduce el potencial de errores resultantes de fallas no controladas.
  • Inicialización : Rust requiere que cada variable se inicialice en un miembro legal de su tipo antes de su uso, lo que evita una inicialización no intencional en un valor inseguro.
  • Manejo de enteros más seguro : todas las conversiones de tipo entero son conversiones explícitas. Los desarrolladores no pueden emitir accidentalmente durante una llamada de función cuando asignan una variable o cuando intentan hacer operaciones aritméticas con otros tipos. La comprobación de desbordamiento está activada de forma predeterminada en Android para Rust, lo que requiere que las operaciones de desbordamiento sean explícitas.

Para obtener más información, consulte la serie de publicaciones de blog sobre la compatibilidad con Android Rust: