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 在 #工厂
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