Vorhersehbarkeit
Anstelle von Extension Traits werden Konstruktoren verwendet (C-CTOR)
Alle Peripheriegeräte, denen die HAL Funktionalität hinzufügt, sollten in einen neuen Typ gekapselt werden – selbst dann, wenn für diese Funktionalität keine zusätzlichen Felder erforderlich sind.
Die Implementierung von Extension Traits für das rohe Peripheriegerät (Raw Peripheral) sollte vermieden werden.
Methoden werden dort, wo es angebracht ist, mit #[inline] versehen (C-INLINE)
Der Rust-Compiler führt standardmäßig kein vollständiges Inlining über Crate-Grenzen hinweg durch. Da eingebettete Anwendungen empfindlich auf unerwartete Vergrößerungen des Codes reagieren, sollte #[inline] verwendet werden, um den Compiler wie folgt zu steuern:
- Alle „kleinen“ Funktionen sollten mit
#[inline]gekennzeichnet werden. Was als „klein” gilt, ist subjektiv; im Allgemeinen zählen jedoch alle Funktionen dazu, die voraussichtlich zu einer Sequenz von nur wenigen Maschinenbefehlen kompiliert werden. - Funktionen, die sehr wahrscheinlich konstante Werte als Parameter erhalten, sollten mit
#[inline]gekennzeichnet werden. Dies ermöglicht es dem Compiler, selbst komplexe Initialisierungslogik zur Kompilierzeit zu berechnen, sofern die Eingabewerte der Funktion bekannt sind.