使用rust-protobuf时我作为参数传递什么?

时间:2018-03-05 19:31:22

标签: rust protocol-buffers

我正在尝试按照instructions生成Rust protobuffer文件:

  

用于生成.rs文件的API

     

用于生成要使用的.rs个文件的API。 G。 from build.rs

     

示例代码:

extern crate protoc_rust;

protoc_rust::run(protoc_rust::Args {
    out_dir: "src/protos",
    input: &["protos/a.proto", "b.proto"],
    includes: &["protos"], }).expect("protoc");
     

Cargo.toml

[build-dependencies]
protoc-rust = "1.4"
     

请注意,此API需要protoc中的$PATH命令。虽然   protoc-gen-rust命令。

没有明确的文档说明这些参数的传递内容。第一个(out_dir)显然是生成文件的目录。input看起来像用于生成的.proto文件列表。在这个例子中,第一个有一个目录,而第二个没有。我是否需要为每个目录或第一个目录传递一个目录? includes让我很困惑。这是要查看的文件夹列表吗?如果我在此处添加protos,我可以针对input的元素省略它吗?

1 个答案:

答案 0 :(得分:6)

如果查看源代码(source),您会看到:

#[derive(Debug, Default)]
pub struct Args<'a> {
    /// --lang_out= param
    pub out_dir: &'a str,
    /// -I args
    pub includes: &'a [&'a str],
    /// List of .proto files to compile
    pub input: &'a [&'a str],
}

所以这些论点的意思是:

out_dir:生成文件的位置

includes-I):protoc将搜索导入的位置(documentation

input:要编译的.proto个文件列表