Statische Garantien
Das Typsystem von Rust verhindert Data Races zur Kompilierzeit (siehe die Traits Send und Sync). Zudem lässt sich das Typsystem nutzen, um weitere Eigenschaften bereits zur Kompilierzeit zu überprüfen, wodurch in einigen Fällen Laufzeitprüfungen überflüssig werden.
Bei Embedded-Programmen lassen sich diese statischen Prüfungen beispielsweise nutzen, um sicherzustellen, dass die Konfiguration von E/A-Schnittstellen korrekt erfolgt. So lässt sich etwa eine API entwerfen, bei der die Initialisierung einer seriellen Schnittstelle nur möglich ist, wenn zuvor die für diese Schnittstelle vorgesehenen Pins konfiguriert wurden.
Zudem lässt sich statisch überprüfen, ob Operationen – wie etwa das Setzen eines Pins auf den Pegel „Low“ – nur an korrekt konfigurierten Peripheriekomponenten ausgeführt werden. Der Versuch, den Ausgangszustand eines Pins zu ändern, der als „Floating Input” (Eingang mit undefiniertem Pegel) konfiguriert ist, würde beispielsweise zu einem Kompilierfehler führen.
Wie bereits im vorherigen Kapitel erläutert, lässt sich auch das Konzept des „Ownership“ (Besitzverhältnis) auf Peripheriekomponenten anwenden, um sicherzustellen, dass nur bestimmte Programmteile diese modifizieren können. Diese Zugriffskontrolle erleichtert das Verständnis und die Analyse der Software im Vergleich zu dem alternativen Ansatz, Peripheriekomponenten als globalen, veränderbaren Zustand zu behandeln.