可预见性

使用构造函数而不是扩展traits

所有由HAL添加功能的外设应该被封装进一个新类型,即使该功能不需要额外的字段。

应该避免为原始外设扩展traits。

方法在适当的地方用#[inline]修饰

Rust编译器默认不会越过crate边界执行完全内联。因为嵌入式应用对于不可预期的代码大小的增加很敏感,#[inline]应该如下所示用来指导编译器:

  • 所有的”小”函数应该被标记#[inline]。什么是”小”是主观的,但是通常所有有希望被编译成一位数的指令序列(single-digit instruction sequences)都可以被视为”小”。
  • 非常有可能把一个常量数值作为你参数的函数应该被标记为#[inline]。这让编译器在编译时就可以进行计算甚至是复杂的初始化逻辑,前提是函数输入是已知的。