14个重大版本发布
0.15.0 | 2020年8月14日 |
---|---|
0.13.0 | 2020年8月13日 |
#2348 in 编码
每月 76 次下载
7KB
99 行
Google Protocol Buffers 编码和解码
🚧 🚧 🚧 🚧 🚧 建设中 - 请勿使用 🚧 🚧 🚧 🚧 🚧
安装Python 3 包 pbtools,并使用它从protobuf规范(s)生成Rust源代码。将生成的文件(s)添加到您的项目crate中。在您的项目Cargo.toml文件中将此crate作为依赖项,然后您就可以使用了。
🚧 🚧 🚧 🚧 🚧 建设中 - 请勿使用 🚧 🚧 🚧 🚧 🚧
$ pip install pbtools
$ pbtools generate_rust_source address_book.proto
$ ls -l
address_book.rs
示例用法
请参阅https://github.com/eerimoq/pbtools/tree/rust/examples/address_book/rust以获取完整的示例。
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("[email protected]"),
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);
}
依赖项
~1.5MB
~35K SLoC