#byte #prost #deserialize #serde #serialization #prpc #add

prpc-serde-bytes

一个过程宏,用于为prost字节添加自定义序列化和反序列化功能

1个不稳定版本

0.1.0 2024年4月18日

#60 in #prost


用于 prpc

Apache-2.0

6KB
84

prpc_serde_bytes

prpc_serde_bytes 是一个Rust过程宏,旨在与同时使用Serde和Prost crate属性的structs一起工作。具体来说,此宏针对标记有 #[prost(bytes = ""vec"")] 的struct字段,并自动向它们添加 #[serde(with = )],以便实现指定的自定义序列化行为。

用法

在您的 Cargo.toml 中将 prpc_serde_bytes 添加为依赖项

[dependencies]
prpc-serde-bytes = "0.1.0"

示例

use prpc_serde_bytes::prpc_serde_bytes;

#[prpc_serde_bytes("::hexed_bytes")]
#[derive(Serialize, Deserialize, prost::Message)]
pub struct Message {
    #[prost(bytes = "vec", tag = "1")]
    pub encoded: ::prost::alloc::vec::Vec<u8>,
    #[prost(uint64, tag = "2")]
    pub timestamp: u64,
}

这将生成以下代码

#[derive(Serialize, Deserialize, prost::Message)]
pub struct Message {
    #[prost(bytes = "vec", tag = "1")]
    #[serde(with = "::hexed_bytes")]
    pub encoded: ::prost::alloc::vec::Vec<u8>,
    #[prost(uint64, tag = "2")]
    pub timestamp: u64,
}

依赖项

~245–670KB
~16K SLoC