#framework #array #no-std

nightly no-std wasefire-wire

Wasefire线格式

1个不稳定版本

0.1.0 2024年7月23日

#1327嵌入式开发

Download history 113/week @ 2024-07-20 18/week @ 2024-07-27

131 每月下载次数
用于 5 个存储库 (2 直接使用)

Apache-2.0

60KB
1.5K SLoC

Wasefire线格式。

此存储库为大型主机到小型设备上的RPC使用的线提供了一种二进制格式。该格式紧凑且规范,特别是它不是自描述的。兼容性通过顶级枚举的标签进行编码,特别是RPC消息永远不会更改,而是复制到一个新的变体。主机支持所有变体,因为它不受限制。设备仅支持最新版本以最小化二进制大小。主机和设备都是用Rust编写的,因此线类型在Rust中定义。数据模型简单,包含内置类型、数组、切片、结构体、枚举,并支持递归。

像serde(带postcard)或protocol buffers这样的替代方案解决了一个比此用例更普遍的问题。主要区别在于

  • 非自描述:模型更简单且更健壮(设备上的代码体积更小)。
  • 没有针对选项和映射的特殊情况:它们是从基本类型编码的。
  • 不需要标记和可选字段:完整消息进行了版本控制。
  • 变体标签可以是显式的,因此可以针对功能进行门控以减少设备代码大小。
  • 线类型仅用于表示线数据,它们不是用作常规数据类型。
  • 线类型仅从线中借用,并以协变的方式进行。
  • 线类型可以通过程序进行检测以进行单元测试。
  • 用户不能实现线特质:他们只能推导它。

依赖关系

~280–730KB
~17K SLoC