2个不稳定版本
0.1.0 | 2023年12月20日 |
---|---|
0.0.0 | 2023年6月15日 |
#115 in #experimental
每月68次下载
用于embassy-net-esp-hosted
25KB
526 行
noproto
noproto 是Rust中用于嵌入式系统的无std、无分配的协议缓冲区(protobuf)实现。优化了二进制大小和内存使用,而不是性能。
状态:非常实验性,☢️,请勿在生产环境中使用。特别是,它不能很好地处理许多protobuf类型(见下文)。
功能
实现
- Derive宏。
heapless::Vec
,heapless::String
实现。可选
重复
oneof
枚举
未实现(?)
- 支持多种protobuf编码。Protobuf "类型"更像是"类型 + 传输编码"的结合,所以一个Rust类型可以在传输线上以多种方式编码。
noproto
目前假设Rust类型足以推断出它在传输线上应该如何编码,这是不正确的。 - 支持更多类型(见下文)
- 为
alloc
容器实现(目标是无分配,但我们仍然可以选择性地实现它们)。 - 为重复字段实现
&[T]
(仅限写入,不限于读取) - 将
.proto
文件编译成Rust代码的工具。 - 映射
- 弃用的字段组。
类型映射
Protobuf | Rust |
---|---|
bool |
bool |
int32 |
TODO |
uint32 |
u32 |
sint32 |
i32 |
fixed32 |
TODO |
sfixed32 |
TODO |
int64 |
TODO |
uint64 |
u64 |
sint64 |
i64 |
fixed64 |
TODO |
sfixed64 |
TODO |
float |
TODO |
double |
TODO |
string |
heapless::String<N> |
bytes |
heapless::Vec<u8, N> |
最低支持的Rust版本(MSRV)
noproto
保证在发布时的最新稳定Rust版本上编译。它可能可以用较旧的版本编译,但这可能在任何新的补丁版本中改变。
许可证
此作品根据以下之一授权
- Apache许可证第2版(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
依赖项
~440–780KB
~17K SLoC