Wprowadzenie do Androida Rust

Platforma Android zapewnia wsparcie dla tworzenia natywnych komponentów systemu operacyjnego w Rust, nowoczesnym języku programowania systemów, który zapewnia gwarancje bezpieczeństwa pamięci z wydajnością równoważną C/C++. Rust używa kombinacji kontroli w czasie kompilacji, które wymuszają czas życia i własności obiektu, oraz kontroli w czasie wykonywania, które zapewniają prawidłowy dostęp do pamięci, eliminując w ten sposób potrzebę garbage collectora.

Rust zapewnia szereg nowoczesnych funkcji językowych, które pozwalają programistom być bardziej produktywnym i pewnym siebie w kodzie:

  • Bezpieczne programowanie współbieżne — łatwość, z jaką umożliwia to użytkownikom pisanie wydajnego, bezpiecznego dla wątków kodu, dała początek sloganowi Rusta Fearless Concurrency .
  • Ekspresyjny system typów — Rust pomaga zapobiegać błędom programowania logicznego, umożliwiając stosowanie wysoce ekspresyjnych typów (takich jak otoki Newtype i warianty wyliczenia z zawartością).
  • Silniejsze kontrole w czasie kompilacji — więcej błędów wykrytych w czasie kompilacji zwiększa pewność programistów, że gdy kod skompiluje się pomyślnie, będzie działał zgodnie z założeniami.
  • Wbudowana platforma testowa — Rust zapewnia wbudowaną platformę testową, w której testy jednostkowe można umieszczać obok testowanej implementacji, co ułatwia uwzględnienie testów jednostkowych.
  • Wymuszanie obsługi błędów — funkcje z możliwymi do naprawienia błędami mogą zwracać typ wyniku , który będzie wariantem powodzenia lub wariantem błędu. Kompilator wymaga, aby wywołujące sprawdzały i obsługiwały wariant błędu wyliczenia Result zwróconego z wywołania funkcji. Zmniejsza to ryzyko błędów wynikających z nieobsługiwanych awarii.
  • Inicjalizacja — Rust wymaga, aby każda zmienna została zainicjowana do prawnego elementu członkowskiego tego typu przed użyciem, zapobiegając niezamierzonej inicjalizacji do niebezpiecznej wartości.
  • Bezpieczniejsza obsługa liczb całkowitych — wszystkie konwersje typu liczb całkowitych są jawnymi rzutowaniami. Deweloperzy nie mogą przypadkowo rzutować podczas wywołania funkcji podczas przypisywania do zmiennej lub podczas próby wykonywania operacji arytmetycznych z innymi typami. Sprawdzanie przepełnienia jest domyślnie włączone w systemie Android for Rust, co wymaga, aby operacje przepełnienia były jawne.

Aby uzyskać więcej informacji, zapoznaj się z serią wpisów na blogu na temat obsługi Androida Rust: