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日 |
在 #proto 中排名第118
每月下载量811次
用于 femtopb
66KB
1.5K SLoC
femtopb
一个小型内存占用,#[no_std]
,无内存分配、无panic的Protobuf序列化库。这允许您在资源受限的平台(如内存非常有限的裸机MCU)上使用Protobuf进行通信。
是的,您没有听错:这个库可以让您在不进行任何动态内存/堆分配的情况下序列化和反序列化Protobuf消息。
当可能时,库会使用简单类型并尽可能少地使用泛型,以避免代码大小爆炸。运行时也由许多小程序组成,以便未使用的程序可以得到优化。
在测试此crate时,会进行检查以确保 femtopb
代码不会panic。如果您想利用无panic检查来自动调试自己的项目,请启用 assert-no-panic
crate功能。对于发布代码,启用此功能可能不是一个好主意,因为启用此功能可能会略微更改生成的代码。
然而,也有一些限制。消息必须从连续的 &[u8]
切片中反序列化,因此不支持从其他 bytes::Buf
类型或流/文件/套接字/... 的增量反序列化。此外,消息在其生存期内借用其源切片。重复字段的反序列化是懒加载的,以避免需要动态分配类似于 Vec
的数据结构。
此库不实现高级功能,如Protobuf反射或已知类型等。为此,请使用 prost
crate。对于可能使用 prost
的应用程序,建议使用 prost
,仅在必要时在 femtopb
上使用。
归属
该API深受prost
软件包的启发,该软件包采用Apache 2.0许可证。一些测试和关键算法也来自该软件包。此软件包也采用Apache 2.0许可证。
依赖项
~225–660KB
~16K SLoC