#消息 #工厂 #protobuf #生成 #创建 #名称 #proto

bin+lib protobuf_message_factory

通过消息名称生成消息工厂以创建消息

4个版本

0.1.3 2019年9月10日
0.1.2 2019年9月8日
0.1.1 2019年9月8日
0.1.0 2019年9月8日

#55#工厂

MIT 许可证

8KB
105

protobuf_message_factory

此仓库为您提供一种通过消息名称生成消息工厂以创建消息实例的方法。

//use can do this in cpp
google::protobuf::Descriptor* desc =
    google::protobuf::DescriptorPool::generated_pool()
        ->FindMessageTypeByName("mypkg.MyType");
google::protobuf::Message* message =
    google::protobuf::MessageFactory::generated_factory()
        ->GetPrototype(desc)->New();
extern crate proto;

use proto::factory::*;

//now you can do this in rust
let desc = get_descriptor(&"mypkg.MyType".to_string()).unwrap();
let message = desc.new_instance();

API文档:https://docs.rs/protobuf_message_factory

使用方法

步骤 1

创建一个项目以生成 proto

$ cargo new proto

将其添加到 Cargo.toml

[dependencies]
protobuf = "2.8.0"

[build-dependencies]
protoc-rust = "2.8.0"
protobuf_message_factory = "0.1.3"

步骤 2

.proto 文件添加到 src/

步骤 3

将代码添加到 build.rs

extern crate protobuf_message_factory;

use protobuf_message_factory::*;

...

fn main() {

    let proto_path = "src/";

    let proto_files = get_protos_info(proto_path);
    let proto_messages = get_proto_list(&proto_files);


    //!!!   this is importent.   !!!
    protoc_rust::run(protoc_rust::Args {
        out_dir: proto_path,
        input: &protos,
        includes: &[proto_path],
        customize: Customize {
          ..Default::default()
        },
    }).expect("protoc");

    //now generate factory codes
    generate_factory_file(proto_path, &proto_files);
}

步骤 4

proto 依赖项添加到项目的 toml 文件中

[dependencies]
proto = {version="^0", path="proto_path"}

步骤 1 创建一个名为 proto 的项目,将 proto_path 替换为您自己的路径

许可证

MIT

依赖关系

~2.2–3MB
~54K SLoC