Introduzione ad Android Rust

La piattaforma Android supporta lo sviluppo di componenti del sistema operativo nativi in Rust, un linguaggio di programmazione di sistemi moderno che fornisce garanzie di sicurezza della memoria con prestazioni equivalenti a C/C++. Rust utilizza una combinazione di controlli in fase di compilazione che applicano la durata e la proprietà degli oggetti e controlli in fase di runtime che garantiscono accessi alla memoria validi, eliminando così la necessità di un garbage collector.

Rust offre una gamma di funzionalità di linguaggio moderne che consentono agli sviluppatori di essere più produttivi e sicuri del proprio codice:

  • Programmazione simultanea sicura: la facilità con cui consente agli utenti di scrivere codice efficiente e thread-safe ha dato origine allo slogan Fearless Concurrency di Rust.
  • Sistema di tipi espressivi: Rust aiuta a prevenire bug di programmazione logici consentendo tipi altamente espressivi (come wrapper Newtype e varianti enum con contenuti).
  • Controlli in fase di compilazione più rigorosi: il rilevamento di un maggior numero di bug in fase di compilazione aumenta la fiducia degli sviluppatori che, quando il codice viene compilato correttamente, funziona come previsto.
  • Framework di test integrato: Rust fornisce un framework di test integrato in cui i test delle unità possono essere inseriti insieme all'implementazione che testano, rendendo più facile includere i test delle unità.
  • Applicazione della gestione degli errori: le funzioni con errori recuperabili possono restituire un tipo di risultato, che sarà una variante di successo o di errore. Il compilatore richiede ai chiamanti di verificare e gestire la variante di errore di un'enumerazione Result restituita da una chiamata di funzione. In questo modo si riduce il potenziale di bug derivanti da errori non gestiti.
  • Inizializzazione: Rust richiede che ogni variabile venga inizializzata a un membro legale del suo tipo prima dell'uso, impedendo un'inizializzazione involontaria a un valore non sicuro.
  • Gestione più sicura degli interi: tutte le conversioni di tipo intero sono cast espliciti. Gli sviluppatori non possono eseguire il cast accidentalmente durante una chiamata di funzione quando assegnano un valore a una variabile o quando tentano di eseguire operazioni aritmetiche con altri tipi. Il controllo dell'overflow è attivo per impostazione predefinita in Android per Rust, il che richiede che le operazioni di overflow siano esplicite.

Per ulteriori informazioni, consulta la serie di post del blog sul supporto di Rust per Android: