1个不稳定版本
0.1.0 | 2024年7月23日 |
---|
#1327 在 嵌入式开发
131 每月下载次数
用于 5 个存储库 (2 直接使用)
60KB
1.5K SLoC
Wasefire线格式。
此存储库为大型主机到小型设备上的RPC使用的线提供了一种二进制格式。该格式紧凑且规范,特别是它不是自描述的。兼容性通过顶级枚举的标签进行编码,特别是RPC消息永远不会更改,而是复制到一个新的变体。主机支持所有变体,因为它不受限制。设备仅支持最新版本以最小化二进制大小。主机和设备都是用Rust编写的,因此线类型在Rust中定义。数据模型简单,包含内置类型、数组、切片、结构体、枚举,并支持递归。
像serde(带postcard)或protocol buffers这样的替代方案解决了一个比此用例更普遍的问题。主要区别在于
- 非自描述:模型更简单且更健壮(设备上的代码体积更小)。
- 没有针对选项和映射的特殊情况:它们是从基本类型编码的。
- 不需要标记和可选字段:完整消息进行了版本控制。
- 变体标签可以是显式的,因此可以针对功能进行门控以减少设备代码大小。
- 线类型仅用于表示线数据,它们不是用作常规数据类型。
- 线类型仅从线中借用,并以协变的方式进行。
- 线类型可以通过程序进行检测以进行单元测试。
- 用户不能实现线特质:他们只能推导它。
依赖关系
~280–730KB
~17K SLoC