3个版本
0.1.2 | 2023年4月14日 |
---|---|
0.1.1 | 2022年12月7日 |
0.1.0 | 2022年4月10日 |
#1778 in 编码
13,230 每月下载量
31KB
720 代码行
hubpack
:一个可预测的 serde
格式
hubpack
是一种将Rust值转换为字节并返回的算法。它最初是为在嵌入式程序之间发送的消息进行编码而设计的。它旨在与 serde
一起使用。
hubpack
的一些优点包括
-
其编码格式相对紧凑。
-
其编码格式是 可预测的。 特别是,没有可变长度的整数编码。
-
由于大小可预测,
hubpack
提供了一个SerializedSize
特性。任何实现了SerializedSize
的类型都可以报告使用hubpack
编码所需的最多字节数。这意味着你可以分配一个固定大小的缓冲区而不必担心。(你可以为你的类型使用#[derive(SerializedSize)]
。) -
编码/解码实现生成了相当小、高效的代码。
-
实现使用了非常少的
unsafe
代码,只有在特定情况下且能显著提高性能且没有合理替代方案的情况下才会使用。
你可能不希望使用 hubpack
,以下是一些局限性
-
hubpack
是为固定大小的较小数据结构设计的,不能编码像Vec
、str
和映射这样的东西。 -
hubpack
不支持具有超过256个变体的enum
类型。 -
hubpack
追求可预测性而非紧凑性,因此某些类型的数据——比如相对于其类型值较小的许多整数——可以使用像bincode
这样的格式更紧凑地编码。
依赖关系
~1.5MB
~41K SLoC