1d9a481baSLucio Franco pub mod hello_world { 2d9a481baSLucio Franco tonic::include_proto!("helloworld"); 3d9a481baSLucio Franco } 4d9a481baSLucio Franco 5d9a481baSLucio Franco pub mod echo { 6*df8dd896Stottoto tonic::include_proto!("grpc.examples.unaryecho"); 7d9a481baSLucio Franco } 8d9a481baSLucio Franco 9d9a481baSLucio Franco use echo::{echo_client::EchoClient, EchoRequest}; 10d9a481baSLucio Franco use hello_world::{greeter_client::GreeterClient, HelloRequest}; 11d9a481baSLucio Franco use tonic::transport::Endpoint; 12d9a481baSLucio Franco 13d9a481baSLucio Franco #[tokio::main] main() -> Result<(), Box<dyn std::error::Error>>14d9a481baSLucio Francoasync fn main() -> Result<(), Box<dyn std::error::Error>> { 15d9a481baSLucio Franco let channel = Endpoint::from_static("http://[::1]:50051") 16d9a481baSLucio Franco .connect() 17d9a481baSLucio Franco .await?; 18d9a481baSLucio Franco 19d9a481baSLucio Franco let mut greeter_client = GreeterClient::new(channel.clone()); 20d9a481baSLucio Franco let mut echo_client = EchoClient::new(channel); 21d9a481baSLucio Franco 22d9a481baSLucio Franco let request = tonic::Request::new(HelloRequest { 23d9a481baSLucio Franco name: "Tonic".into(), 24d9a481baSLucio Franco }); 25d9a481baSLucio Franco 26d9a481baSLucio Franco let response = greeter_client.say_hello(request).await?; 27d9a481baSLucio Franco 28d9a481baSLucio Franco println!("GREETER RESPONSE={:?}", response); 29d9a481baSLucio Franco 30d9a481baSLucio Franco let request = tonic::Request::new(EchoRequest { 31d9a481baSLucio Franco message: "hello".into(), 32d9a481baSLucio Franco }); 33d9a481baSLucio Franco 34d9a481baSLucio Franco let response = echo_client.unary_echo(request).await?; 35d9a481baSLucio Franco 36d9a481baSLucio Franco println!("ECHO RESPONSE={:?}", response); 37d9a481baSLucio Franco 38d9a481baSLucio Franco Ok(()) 39d9a481baSLucio Franco } 40