8个版本

0.2.0 2024年3月15日
0.1.4 2023年10月4日
0.1.3 2023年9月21日
0.0.3 2023年9月14日
0.0.2 2023年8月9日

#4 in #protokit

Download history 6/week @ 2024-04-04 1/week @ 2024-05-16 3/week @ 2024-05-23 6/week @ 2024-05-30

320 每月下载量
protokit中使用

MIT 许可证

43KB
1K SLoC

Protokit

crates.io img example workflow

Rust的协议缓冲区实现。

为什么不使用prost/pb-j/rust-protobuf?

最初是出于对正确textformat支持的需

any_value {
  [type.googleapis.com/com.example.SomeType] {
    field1: "hello"
  }
}

在我调查了其他crate后,我发现它们存在其他问题(rust-protobuf需要装箱,prost的代码生成杂乱)。

特性

  • 二进制(100%兼容)+ 文本(90%兼容)格式支持
  • 不需要消息装箱
  • GRPC(与tonic兼容)
  • 创建消息实现的好宏,无需proto编译器
#[derive(Default, Debug, Clone, BinProto)]
pub struct FieldPath {
    #[field(1, varint, packed)]
    pub fields: Vec<u32>,
}

#[derive(Default, Debug, Clone, BinProto)]
pub struct FieldMask {
    #[field(1, nested, repeated)]
    pub paths: Vec<FieldPath>,
}

依赖

~10–19MB
~251K SLoC