04-可预测性

可预测性(Predictability)

译文 · 基于 The Embedded Rust Book

可预测性

原文链接: https://doc.rust-lang.org/stable/embedded-book/design-patterns/hal/predictability.html

使用构造函数而非扩展 trait(C-CTOR)

凡是 HAL 为其增加功能的外设,都应包装在新类型中,即便该功能不需要额外字段。

应避免为原始外设实现扩展 trait。

在适当时为方法添加 #[inline](C-INLINE)

Rust 编译器默认不会跨 crate 边界执行充分内联。嵌入式应用对意外的代码体积增长敏感,因此应按如下方式使用 #[inline] 引导编译器:

  • 所有「小」函数都应标记 #[inline]。「小」是主观判断,但一般而言,预期会编译成个位数指令序列的函数都可视为小函数。
  • 很可能以常量值作为参数的函数也应标记 #[inline]。这样在函数输入已知时,编译器甚至能在编译期完成复杂的初始化逻辑。
最后修改 August 11, 2026: 更新 (70a5af133)