Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Введение в Android Rust
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Платформа Android обеспечивает поддержку разработки собственных компонентов ОС на Rust, современном языке системного программирования, который обеспечивает гарантии безопасности памяти с производительностью, эквивалентной C/C++. Rust использует комбинацию проверок во время компиляции, которые обеспечивают продолжительность жизни и владение объектом, и проверок во время выполнения, которые обеспечивают допустимый доступ к памяти, тем самым устраняя необходимость в сборщике мусора.
Rust предоставляет ряд современных языковых возможностей, которые позволяют разработчикам работать более продуктивно и уверенно в своем коде:
- Безопасное параллельное программирование . Легкость, с которой пользователи могут писать эффективный, потокобезопасный код, привела к появлению слогана Rust «Бесстрашный параллелизм» .
- Выразительная система типов . Rust помогает предотвратить ошибки логического программирования, допуская использование очень выразительных типов (таких как оболочки Newtype и варианты перечислений с содержимым).
- Более строгие проверки во время компиляции . Большее количество ошибок, обнаруженных во время компиляции, повышает уверенность разработчика в том, что при успешной компиляции кода он работает так, как задумано.
- Встроенная среда тестирования . Rust предоставляет встроенную среду тестирования, в которой модульные тесты можно размещать рядом с реализацией, которую они тестируют, что упрощает включение модульного тестирования.
- Принудительная обработка ошибок — функции с восстанавливаемыми сбоями могут возвращать тип Result , который будет либо успешным вариантом, либо ошибочным вариантом. Компилятор требует, чтобы вызывающие проверяли и обрабатывали ошибочный вариант перечисления
Result
, возвращаемого вызовом функции. Это снижает вероятность ошибок, возникающих из-за необработанных сбоев. - Инициализация . Rust требует, чтобы каждая переменная перед использованием была инициализирована допустимым членом ее типа, что предотвращает непреднамеренную инициализацию небезопасным значением.
- Более безопасная обработка целых чисел — все преобразования целочисленных типов являются явными приведениями. Разработчики не могут случайно выполнить приведение во время вызова функции при назначении переменной или при попытке выполнить арифметические действия с другими типами. Проверка переполнения включена по умолчанию в Android для Rust, что требует явных операций переполнения.
Более подробную информацию можно найти в серии публикаций в блоге о поддержке Android Rust:
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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."]]