Einführung in Android Rust

Die Android-Plattform bietet Unterstützung für die Entwicklung nativer Betriebssystemkomponenten in Rust, einer modernen Systemprogrammiersprache, die Arbeitsspeichersicherheitsgarantien mit einer Leistung, die C/C++ entspricht. Rust verwendet eine Kombination aus Prüfungen während der Kompilierungszeit, die die Objektlebensdauer und -eigentümerschaft erzwingen, und Laufzeitprüfungen, die gültige Arbeitsspeicherzugriffe sicherstellen, wodurch die Notwendigkeit einer automatischen Speicherbereinigung entfällt.

Rust bietet eine Reihe moderner Sprachfeatures, mit denen Entwickler produktiver arbeiten und sich auf ihren Code verlassen können:

  • Sichere gleichzeitige Programmierung: Die Einfachheit, mit der Nutzer effizienten, threadsicheren Code schreiben können, hat Rusts Slogan Fearless Concurrency zur Folge.
  • Ausdrucksstarkes Typsystem: Rust hilft, logische Programmierfehler zu vermeiden, indem es sehr ausdrucksstarke Typen zulässt (z. B. Newtype-Wrapper und Enum-Varianten mit Inhalt).
  • Stärkere Prüfungen zur Kompilierungszeit: Je mehr Fehler bei der Kompilierung erkannt werden, desto sicherer können sich Entwickler sein, dass der Code funktioniert, wenn er erfolgreich kompiliert wird.
  • Integriertes Test-Framework: Rust bietet ein integriertes Test-Framework, in dem Unit-Tests neben der zu testenden Implementierung platziert werden können, was die Einbindung von Unit-Tests erleichtert.
  • Erzwungene Fehlerbehandlung: Funktionen mit wiederherstellbaren Fehlern können einen Ergebnistyp zurückgeben, der entweder eine Erfolgsvariante oder eine Fehlervariante ist. Der Compiler erfordert, dass Aufrufer nach der Fehlervariante einer Result-Enum, die von einem Funktionsaufruf zurückgegeben wird, prüfen und verarbeiten müssen. So wird das Risiko von Fehlern, die durch nicht verarbeitete Fehler entstehen, verringert.
  • Initialisierung: Rust erfordert, dass jede Variable vor der Verwendung für ein zulässiges Element ihres Typs initialisiert wird. Dadurch wird eine unbeabsichtigte Initialisierung auf einen unsicheren Wert verhindert.
  • Sicherere Ganzzahlverarbeitung: Alle Ganzzahlkonvertierungen sind explizite Umwandlungen. Entwickler können bei der Zuweisung zu einer Variablen oder beim Versuch, mit anderen Typen arithmetische Operationen auszuführen, nicht versehentlich während eines Funktionsaufrufs einen Casting-Vorgang ausführen. Die Overflow-Prüfung ist in Android für Rust standardmäßig aktiviert. Overflow-Vorgänge müssen also explizit sein.

Weitere Informationen finden Sie in der Reihe von Blogposts zum Android-Rust-Support: