stepancheg / grpc-rust

Rust implementation of gRPC
MIT License
1.38k stars 124 forks source link

"empty.proto" is missing. #156

Closed zsluedem closed 5 years ago

zsluedem commented 5 years ago

31 There is a related issue. But it can not solve the problem.

syntax = "proto3";
import "google/protobuf/empty.proto";

service TestService {
  rpc test(google.protobuf.Empty) returns (google.protobuf.Empty) {}
}

build.rs

extern crate protoc_rust_grpc;

fn main() {
    protoc_rust_grpc::run(protoc_rust_grpc::Args {
        out_dir: "src",
        includes: &["protobuf"],
        input: &["protobuf/test.proto"],
        rust_protobuf: true,
        ..Default::default()
    }).expect("protoc-rust-grpc");
}

would generate


pub trait TestService {
    fn test(&self, o: ::grpc::RequestOptions, p: super::empty::Empty) -> ::grpc::SingleResponse<super::empty::Empty>;
}

// client

pub struct TestServiceClient {
    grpc_client: ::std::sync::Arc<::grpc::Client>,
    method_test: ::std::sync::Arc<::grpc::rt::MethodDescriptor<super::empty::Empty, super::empty::Empty>>,
}

super::empty::Empty is not available.

zsluedem commented 5 years ago

put

mod empty {
  pub use protobuf::well_known_types::Empty;
}

in mod.rs in the same directory can solve the problem