Wprowadzenie do Rust na Androida

Platforma Android obsługuje tworzenie komponentów natywnych systemu operacyjnego w języku Rust, który jest nowoczesnym językiem programowania systemowego zapewniającym bezpieczeństwo pamięci przy wydajności porównywalnej z językami C/C++. Rust używa kombinacji kontroli wykonywanych w czasie kompilacji, które egzekwują czas życia i własność obiektu, oraz kontroli wykonywanych w czasie działania, które zapewniają prawidłowe dostępy do pamięci, co eliminuje potrzebę korzystania z zbieracza elementów niepożądanych.

Rust oferuje wiele nowoczesnych funkcji językowych, które pozwalają programistom zwiększyć produktywność i pewność siebie w przypadku kodu:

  • Bezpieczne programowanie równoległe – łatwość, z jaką użytkownicy mogą pisać wydajny kod bezpieczny w zakresie wątków, zaowocowała sloganem Bezpieczne równoległość.
  • System typów o wyraźnych właściwościach – Rust zapobiega błędom logicznego programowania, zezwalając na bardzo wyraziste typy (np. oprawy Newtype i warianty enum z zawartością).
  • Bardziej skuteczne sprawdzanie w czasie kompilacji – więcej błędów wykrytych w czasie kompilacji zwiększa pewność programistów, że gdy kod zostanie skompilowany, będzie działał zgodnie z oczekiwaniami.
  • Wbudowany framework testowy – Rust zawiera wbudowany framework testowy, w którym testy jednostkowe można umieszczać obok implementacji, co ułatwia uwzględnianie testów jednostkowych.
  • Egzekwowanie obsługi błędów – funkcje z możliwością odzyskiwania błędów mogą zwracać typ wyniku, który będzie albo wariantem powodzenia, albo wariantem błędu. Kompilator wymaga, aby wywołujący sprawdzali i obsługiwali wariant błędu typu Result zwracanego przez wywołanie funkcji. Pozwala to zmniejszyć ryzyko wystąpienia błędów wynikających z nieobsługiwanych błędów.
  • Inicjowanie – Rust wymaga, aby każda zmienna przed użyciem była inicjowana do legalnego elementu typu, co zapobiega niezamierzonemu inicjowaniu do wartości niebezpiecznej.
  • Bezpieczniejsze przetwarzanie liczb całkowitych – wszystkie konwersje typu liczba całkowita są jawnymi konwersjami. Deweloperzy nie mogą przypadkowo rzutować podczas wywołania funkcji, przy przypisywaniu zmiennej ani podczas próby wykonania operacji arytmetycznej z innymi typami. Sprawdzanie przepełnienia jest domyślnie włączone w Rust na Androidzie, co wymaga, aby operacje przepełnienia były jawne.

Więcej informacji znajdziesz w tej serii postów na blogu dotyczących obsługi Rust na Androida: