Введение в Android Rust

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

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

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

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