#protobuf #proto #proto3 #codec

pbtools

Google Protocol Buffers 编码和解码

14个重大版本发布

0.15.0 2020年8月14日
0.13.0 2020年8月13日

#2348 in 编码

Download history 5/week @ 2024-03-29 76/week @ 2024-06-28

每月 76 次下载

MIT 许可证

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