予測可能性
拡張トレイトではなくコンストラクタを使用する (C-CTOR)
HAL が機能を追加するすべてのペリフェラルは、その機能に追加のフィールドが不要であっても、新しい型でラップすべきです。
生のペリフェラルに対して実装された拡張トレイトは避けるべきです。
適切な箇所でメソッドに #[inline] を付ける (C-INLINE)
Rust コンパイラは、デフォルトでは crate 境界をまたぐ完全なインライン化を行いません。組み込みアプリケーションは予期しないコードサイズの増加に敏感であるため、#[inline] を使用して次のようにコンパイラを誘導すべきです。
- すべての「小さい」関数には
#[inline]を付けるべきです。「小さい」と見なされるかどうかは主観的ですが、一般には、コンパイル後に一桁個の命令列になると見込まれる関数は、いずれも小さいと見なされます。 - パラメータとして定数値を受け取る可能性が非常に高い関数には、
#[inline]を付けるべきです。これにより、関数への入力が既知である限り、複雑な初期化ロジックであってもコンパイラがコンパイル時に計算できるようになります。