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 gwarancję bezpieczeństwa pamięci z wydajnością porównywalną z C/C++. Rust wykorzystuje kombinację kontroli w czasie kompilacji, które wymuszają czas życia i własność obiektu, oraz kontroli w czasie wykonywania, które zapewniają prawidłowy dostęp do pamięci, eliminując w ten sposób potrzebę modułu zbierającego elementy bezużyteczne.

Rust zapewnia szereg nowoczesnych funkcji językowych, które pozwalają programistom na większą produktywność i pewność pracy nad kodem:

  • 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 Rust Fearless Concurrency .
  • System typów ekspresyjnych — Rust pomaga zapobiegać błędom programowania logicznego, umożliwiając stosowanie typów wysoce ekspresyjnych (takich jak opakowania Newtype i warianty wyliczeń z zawartością).
  • Silniejsze kontrole w czasie kompilacji — więcej błędów wykrytych w czasie kompilacji zwiększa pewność programistów, że pomyślnie skompilowany kod działa zgodnie z zamierzeniami.
  • Wbudowane środowisko testowe — Rust zapewnia wbudowaną strukturę testową, w której testy jednostkowe można umieścić obok testowanej implementacji, co ułatwia włączenie 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 osoby wywołujące sprawdziły i obsłużyły wariant błędu wyliczenia Result zwróconego z wywołania funkcji. Zmniejsza to ryzyko wystąpienia błędów wynikających z nieobsługiwanych błędów.
  • Inicjalizacja - Rust wymaga, aby każda zmienna została zainicjowana do legalnego elementu tego typu przed użyciem, co zapobiega niezamierzonej inicjalizacji do niebezpiecznej wartości.
  • Bezpieczniejsza obsługa liczb całkowitych — wszystkie konwersje typu całkowitego są jawnymi rzutowaniami. Programiści nie mogą przypadkowo rzutować podczas wywołania funkcji podczas przypisywania zmiennej lub podczas próby wykonania operacji arytmetycznych na innych typach. Sprawdzanie przepełnienia jest domyślnie włączone w systemie Android dla Rust, co wymaga jawnych operacji przepełnienia.

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