14 breaking releases
0.15.0 | Aug 14, 2020 |
---|---|
0.13.0 | Aug 13, 2020 |
#2347 in Encoding
76 downloads per month
7KB
99 lines
Google Protocol Buffers encoding and decoding
🚧 🚧 🚧 🚧 🚧 Under construction - DO NOT USE 🚧 🚧 🚧 🚧 🚧
Install the Python 3 package pbtools and use it to generate Rust source code from protobuf specification(s). Add the generated file(s) to your project's crate. Add this crate as a dependency in your project's Cargo.toml file and you should be good to go.
🚧 🚧 🚧 🚧 🚧 Under construction - DO NOT USE 🚧 🚧 🚧 🚧 🚧
$ pip install pbtools
$ pbtools generate_rust_source address_book.proto
$ ls -l
address_book.rs
Example usage
See https://github.com/eerimoq/pbtools/tree/rust/examples/address_book/rust for the complete example.
use address_book::{AddressBook, Person};
use address_book::person::{PhoneNumber, PhoneType};
fn main() {
// Encode.
let mut address_book = AddressBook {
people: vec![
Person {
name: String::from("Kalle Kula"),
id: 56,
email: String::from("kalle.kula@foobar.com"),
phones: vec![
PhoneNumber {
number: String::from("+46701232345"),
type_: PhoneType::HOME
},
PhoneNumber {
number: String::from("+46999999999"),
type_: PhoneType::WORK
}
]
}
]
};
let encoded = address_book.encode();
println!("Encoded: {:?}", encoded);
// Decode.
address_book = Default::default();
match address_book.decode(encoded) {
Ok(()) => println!("Ok!"),
Err(message) => println!("Error: {}", message)
}
println!("Decoded:\n{:#?}", address_book);
}
Dependencies
~1.5MB
~35K SLoC