#prost-build #protobuf #prost #serde-derive #serde #derive

build prost-build-config

一个使用 prost 和 protobuf 文件构建的额外 derive/attrs 支持的工具箱

6 个版本

0.6.3 2023 年 12 月 21 日
0.6.1 2023 年 12 月 20 日
0.5.0 2022 年 10 月 7 日
0.4.1 2022 年 1 月 22 日

#184 in 构建工具

Download history 618/week @ 2024-03-14 680/week @ 2024-03-21 464/week @ 2024-03-28 340/week @ 2024-04-04 814/week @ 2024-04-11 509/week @ 2024-04-18 558/week @ 2024-04-25 427/week @ 2024-05-02 478/week @ 2024-05-09 295/week @ 2024-05-16 278/week @ 2024-05-23 415/week @ 2024-05-30 312/week @ 2024-06-06 273/week @ 2024-06-13 413/week @ 2024-06-20 262/week @ 2024-06-27

每月 1,324 次下载
用于 2 个 crate(通过 rings-rpc

MIT 许可

11KB
112

prost-helper

提供两个 crate 以帮助 prost 更好地与 protobuf 合作

  • prost-build-config:使用 prost 和 protobuf 文件生成与 serde 兼容的代码。更多信息请参见 文档
  • prost-helper:用于 prost 的宏和函数。更多信息请参见 文档

在 Cargo 项目中使用 prost-helper

首先,将 prost-build-configprost-helper 添加到您的 Cargo.toml 文件中

[dependencies]
prost-helper = "0.6"

[build-dependencies]
prost-build-config = "0.4"

然后,将 prost-build-config/default_build_config.yml 复制到您的项目中并自定义它。更多信息请参见 prost-build-config/examples/build_config.yml。然后,您可以在 build.rs 中添加以下内容

use prost_build_config::{BuildConfig, Builder};

fn main() {
    let config: BuildConfig = serde_yaml::from_str(include_str!("path/to/your/build_config.yml")).unwrap();
    Builder::from(config).build_protos();
}

就是这样!

如果您想为 From 特性生成到 Vec<u8> 或从 Vec<u8> 到 protobuf 数据结构生成 TryFrom 特性,可以使用 prost_into_vec!vec_try_into_prost! 宏。以下是一个示例

use prost::Message;
use std::convert::TryInto;

#[derive(Clone, PartialEq, Eq, Message)]
pub struct Hello {
    #[prost(string, tag = "1")]
    pub msg: String,
}

// implement the traits
prost_into_vec!(Hello, 32);
vec_try_into_prost!(Hello);


let hello = Hello::default();

// use `Into` to convert message to `Vec<u8>`
let data: Vec<u8> = hello.into();

// use `TryInto` to convert `Vec<u8>` back to message
let hello_result: Result<Hello, prost::DecodeError> = data.try_into();

享受使用 prost 的乐趣!

许可证

prost-helper 在 MIT 许可下分发。

有关详细信息,请参阅 LICENSE

版权所有 2021 Tyr Chen

依赖关系

~8–19MB
~255K SLoC