可预见性
使用构造函数而不是扩展traits
所有由HAL添加功能的外设应该被封装进一个新类型,即使该功能不需要额外的字段。
应该避免为基本外设扩展traits。
方法在适当的地方用#[inline]
修饰
Rust编译器默认不会越过crate边界执行完全内联。因为嵌入式应用对于不可预期的代码大小的增加很敏感,#[inline]
应该如下所示用来指导编译器:
- 所有的"小"函数应该被标记
#[inline]
。什么是"小"是主观的,但是通常所有有可能被编译成一位数的指令序列(single-digit instruction sequences)都可以被视为"小"。 - 非常有可能把一个常量数值作为参数的函数应该被标记为
#[inline]
。这让编译器在编译时就可以进行计算甚至是复杂的初始化逻辑,前提是函数输入是已知的。