12 个不稳定版本 (3 个破坏性更新)
0.5.0 | 2024 年 8 月 1 日 |
---|---|
0.4.5 | 2024 年 4 月 19 日 |
0.3.0 |
|
0.2.0 | 2024 年 4 月 3 日 |
0.1.4 | 2024 年 4 月 3 日 |
#993 在 编码 中
每月 837 次下载
115KB
2.5K SLoC
femtopb
一个小型足迹、#[no_std]
、无分配、无恐慌的 Protobuf 序列化库。这允许您在资源受限的平台(如非常有限的 RAM 的裸机 MCU)上使用 Protobuf 进行通信。
是的,您听对了:这个库允许您在不进行任何动态内存/堆分配的情况下序列化和反序列化 Protobuf 消息。
该库尽可能使用简单类型,并有限地使用泛型,以避免单一化代码大小爆炸。运行时还由许多微小的函数组成,以便未使用的函数可以被优化掉。
在对这个 crate 进行测试时,会进行检查以确保 femtopb
代码不会引发恐慌。如果您想利用无恐慌检查来调试自己的项目,请启用 assert-no-panic
crate 功能。启用此功能可能不是发布代码的好主意,因为启用此功能可能会略微改变生成的代码。
然而,也有一些限制。消息必须从连续的 &[u8]
切片反序列化,因此不支持从其他 bytes::Buf
类型、流/文件/套接字/... 进行增量反序列化。此外,消息在其生命周期内借用其源切片。重复字段的反序列化是懒加载的,以避免需要动态分配类似 Vec
的数据结构。
该库没有实现像 Protobuf 反射或已知类型等高级功能。为此,请使用 prost
包。在可能的情况下,建议使用 prost
,仅在必要时才在平台中使用 femtopb
。
署名
API 受 prost
包的极大启发,该包采用 Apache 2.0 许可。一些测试和关键算法也来自该包。此包也采用 Apache 2.0 许可。
依赖关系
~265–770KB
~18K SLoC