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