3个版本

0.1.2 2023年4月14日
0.1.1 2022年12月7日
0.1.0 2022年4月10日

#1778 in 编码

Download history 3466/week @ 2024-04-10 2966/week @ 2024-04-17 3955/week @ 2024-04-24 3145/week @ 2024-05-01 3416/week @ 2024-05-08 3031/week @ 2024-05-15 2044/week @ 2024-05-22 2923/week @ 2024-05-29 2099/week @ 2024-06-05 2240/week @ 2024-06-12 3397/week @ 2024-06-19 2771/week @ 2024-06-26 2462/week @ 2024-07-03 4298/week @ 2024-07-10 3727/week @ 2024-07-17 2215/week @ 2024-07-24

13,230 每月下载量

MPL-2.0 许可证

31KB
720 代码行

hubpack:一个可预测的 serde 格式

hubpack 是一种将Rust值转换为字节并返回的算法。它最初是为在嵌入式程序之间发送的消息进行编码而设计的。它旨在与 serde 一起使用。

hubpack 的一些优点包括

  • 其编码格式相对紧凑。

  • 其编码格式是 可预测的。 特别是,没有可变长度的整数编码。

  • 由于大小可预测,hubpack 提供了一个 SerializedSize 特性。任何实现了 SerializedSize 的类型都可以报告使用 hubpack 编码所需的最多字节数。这意味着你可以分配一个固定大小的缓冲区而不必担心。(你可以为你的类型使用 #[derive(SerializedSize)]。)

  • 编码/解码实现生成了相当小、高效的代码。

  • 实现使用了非常少的 unsafe 代码,只有在特定情况下且能显著提高性能且没有合理替代方案的情况下才会使用。

你可能不希望使用 hubpack,以下是一些局限性

  • hubpack 是为固定大小的较小数据结构设计的,不能编码像 Vecstr 和映射这样的东西。

  • hubpack 不支持具有超过256个变体的 enum 类型。

  • hubpack 追求可预测性而非紧凑性,因此某些类型的数据——比如相对于其类型值较小的许多整数——可以使用像 bincode 这样的格式更紧凑地编码。

依赖关系

~1.5MB
~41K SLoC