Two crates are provided to facilitate prost to better work with protobuf: - prost-serde: help you to generate serde compatible code with prost and protobuf files. More in documentation. - prost-helper: macros and functions to facilitate prost. More in documentation.
prost-helper
in a Cargo ProjectFirst, add prost-serde
and prost-helper
to your Cargo.toml
:
``` [dependencies] prost-helper = "0.6"
[build-dependencies] prost-serde = "0.3" ```
Then copy the defaultbuildconfig.json to your project and customize it. See more information in prost-serde/examples/build_config.json. Then you could add this in your build.rs:
rust
fn main() {
let json = include_str!("path/to/your/build_config.json");
build_with_serde(json);
}
That's it!
If you'd like to generate the implementation for From
trait to Vec<u8>
, or TryFrom
trait from Vec<u8>
to protobuf data structure, you could use prost_into_vec!
and vec_try_into_prost!
macros. Here is an example:
```rust use prost::Message; use std::convert::TryInto;
pub struct Hello { #[prost(string, tag = "1")] pub msg: String, }
// implement the traits prostintovec!(Hello, 32); vectryinto_prost!(Hello);
let hello = Hello::default();
// use Into
to convert message to Vec<u8>
let data: Vec
// use TryInto
to convert Vec<u8>
back to message
let helloresult: Result
Have fun with prost!
prost-helper
is distributed under the terms of MIT.
See LICENSE for details.
Copyright 2021 Tyr Chen