可预测性

使用构造函数代替扩展特征 (C-CTOR)

HAL 添加功能的所有外设都应包装在新的类型中,即使该功能不需要额外的字段。

应避免为原始外设实现的扩展特征。

方法在适当的地方用 #[inline] 装饰 (C-INLINE)

Rust 编译器默认情况下不会跨 crate 边界执行完全内联。由于嵌入式应用程序对意外的代码大小增加很敏感,因此应使用 #[inline] 来指导编译器,如下所示

  • 所有“小”函数都应标记为 #[inline]。什么是“小”是主观的,但通常所有预期编译为单数位指令序列的函数都符合“小”的标准。
  • 非常有可能以常量值作为参数的函数应标记为 #[inline]。这使编译器能够在编译时计算即使是复杂的初始化逻辑,前提是函数输入是已知的。