A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Introduzione ad Android Rust
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La piattaforma Android fornisce il supporto per 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 di runtime che garantiscono accessi alla memoria validi, eliminando così la necessità di un garbage collector.
Rust offre una serie di funzionalità di linguaggio moderno che consentono agli sviluppatori di essere più produttivi e sicuri del proprio codice:
- Programmazione concorrente sicura: la facilità con cui consente agli utenti di scrivere codice efficiente e sicuro per i thread ha dato origine allo slogan di Rust Concorrenza senza paura.
- Sistema di tipi espressivo: Rust aiuta a prevenire i bug di programmazione logica consentendo tipi altamente espressivi (come i wrapper Newtype e le varianti di enum con contenuti).
- Controlli di compilazione più rigorosi: un maggior numero di bug rilevati in fase di compilazione aumenta la sicurezza degli sviluppatori che, quando il codice viene compilato correttamente, funziona come previsto.
- Framework di test integrato: Rust fornisce un framework di test integrato
dove i test di unità possono essere posizionati accanto all'implementazione che testano, semplificando
l'inclusione dei test di 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 agli utenti chiamanti di verificare e gestire la variante di errore di un enum
Result
restituito da una chiamata di funzione. In questo modo si riduce la possibilità 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 conversioni esplicite.
Gli sviluppatori non possono eseguire il casting 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 sull'assistenza di Rust per Android:
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Android Rust introduction\n\nThe Android platform provides support for developing native OS components in Rust,\na modern systems-programming language that provides memory safety guarantees with\nperformance equivalent to C/C++. Rust uses a combination of compile-time checks\nthat enforce object lifetime and ownership, and runtime checks that ensure valid\nmemory accesses, thereby eliminating the need for a garbage collector.\n\nRust provides a range of modern language features which allow developers to be\nmore productive and confident in their code:\n\n- **Safe concurrent programming** - The ease with which this allows users to write efficient, thread-safe code has given rise to Rust's [Fearless Concurrency](https://doc.rust-lang.org/book/ch16-00-concurrency.html) slogan.\n- **Expressive type system** - Rust helps prevent logical programming bugs by allowing for highly expressive types (such as Newtype wrappers, and enum variants with contents).\n- **Stronger Compile-time Checks** - More bugs caught at compile-time increases developer confidence that when code compiles successfully, it works as intended.\n- **Built-in Testing Framework** - Rust provides a built-in testing framework where unit tests can be placed alongside the implementation they test, making unit testing easier to include.\n- **Error handling enforcement** - Functions with recoverable failures can return a [Result type](https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html), which will be either a success variant or an error variant. The compiler requires callers to check for and handle the error variant of a `Result` enum returned from a function call. This reduces the potential for bugs resulting from unhandled failures.\n- **Initialization** - Rust requires every variable to be initialized to a legal member of its type before use, preventing an unintentional initialization to an unsafe value.\n- **Safer integer handling** - All integer-type conversions are explicit casts. Developers can't accidentally cast during a function call when assigning to a variable, or when attempting to do arithmetic with other types. Overflow checking is on by default in Android for Rust, which requires overflow operations to be explicit.\n\nFor more information, see the series of blog posts on Android Rust support:\n\n- [Rust in the Android Platform](https://security.googleblog.com/2021/04/rust-in-android-platform.html) \n Provides an overview on why the Android team introduced Rust as a new platform language.\n- [Integrating Rust into the Android Open Source Project](https://security.googleblog.com/2021/05/integrating-rust-into-android-open.html) \n Discusses how Rust support has been introduced to the build system, and why certain design decisions were made.\n- [Rust/C++ interop in the Android Platform](https://security.googleblog.com/2021/06/rustc-interop-in-android-platform.html) \n Discusses the approach to Rust/C++ interoperability within Android."]]