03-互操作性
互操作性(Interoperability)
1分钟内可阅读完
译文 · 基于 The Embedded Rust Book
互操作性
原文链接: https://doc.rust-lang.org/stable/embedded-book/design-patterns/hal/interoperability.html
包装类型提供析构方法(C-FREE)
HAL 提供的任何非 Copy 包装类型都应提供 free 方法:消费该包装类型,并返回创建它时所用的原始外设(以及可能的其它对象)。
该方法应在必要时关闭并复位外设。使用 free 返回的原始外设再次调用 new 时,不应因外设处于意外状态而失败。
若构造 HAL 类型还需要其它非 Copy 对象(例如 I/O 引脚),free 也应释放并返回这些对象。此时 free 应返回元组。
例如:
| |
HAL 再导出其寄存器访问 crate(C-REEXPORT-PAC)
HAL 可以基于 svd2rust 生成的 PAC 编写,也可以基于其它提供原始寄存器访问的 crate。HAL 应始终在 crate 根再导出其所依赖的寄存器访问 crate。
无论实际 crate 名称如何,PAC 都应再导出为 pac:HAL 的名称本身已能表明访问的是哪个 PAC。
类型实现 embedded-hal trait(C-HAL-TRAITS)
HAL 提供的类型应实现 embedded-hal crate 中所有适用的 trait。
同一类型可以实现多个 trait。