Введение в Android Rust

Платформа Android обеспечивает поддержку разработки нативных компонентов ОС на языке Rust, современном языке системного программирования, который гарантирует безопасность памяти и производительность, эквивалентную C/C++. Rust использует комбинацию проверок на этапе компиляции, обеспечивающих время жизни объектов и владение ими, и проверок на этапе выполнения, гарантирующих корректный доступ к памяти, что исключает необходимость в сборщике мусора.

Rust предоставляет ряд современных языковых возможностей, которые позволяют разработчикам быть более продуктивными и уверенными в своем коде:

  • Безопасное параллельное программирование — простота, с которой это позволяет пользователям писать эффективный, потокобезопасный код, породила слоган Rust « Бесстрашная параллельность» .
  • Выразительная система типов — Rust помогает предотвратить логические ошибки программирования, позволяя использовать очень выразительные типы (например, обертки Newtype и варианты перечислений с содержимым).
  • Более строгие проверки на этапе компиляции — выявление большего количества ошибок на этапе компиляции повышает уверенность разработчиков в том, что успешно скомпилированный код работает должным образом.
  • Встроенная среда тестирования — Rust предоставляет встроенную среду тестирования, в которой модульные тесты могут размещаться рядом с проверяемой реализацией, что упрощает включение модульного тестирования.
  • Обеспечение обработки ошибок — функции с устранимыми сбоями могут возвращать тип Result , который может быть либо вариантом успешного выполнения, либо вариантом ошибки. Компилятор требует от вызывающих функций проверять и обрабатывать вариант ошибки перечисления Result , возвращаемого при вызове функции. Это снижает вероятность возникновения ошибок, вызванных необработанными сбоями.
  • Инициализация — Rust требует, чтобы каждая переменная перед использованием была инициализирована допустимым членом своего типа, что предотвращает непреднамеренную инициализацию небезопасным значением.
  • Более безопасная обработка целых чисел — все преобразования целочисленных типов выполняются явным приведением типов. Разработчики не смогут случайно выполнить приведение типа во время вызова функции при присваивании значения переменной или при попытке выполнить арифметические операции с другими типами. Проверка на переполнение включена по умолчанию в Android для Rust, что требует явного выполнения операций переполнения.

Для получения более подробной информации см. серию статей в блоге о поддержке Rust в Android: