use tonic::{Request, Response, Server, Status}; pub mod hello_world { include!(concat!(env!("OUT_DIR"), "/helloworld.rs")); } #[derive(Default)] pub struct MyGreeter { data: String, } #[tonic::async_trait] impl hello_world::Greeter for MyGreeter { async fn say_hello( &self, request: Request, ) -> Result, Status> { println!("Got a request: {:?}", request); let string = &self.data; println!("My data: {:?}", string); let reply = hello_world::HelloReply { message: "Zomg, it works!".into(), }; Ok(Response::new(reply)) } } #[tokio::main] async fn main() -> Result<(), Box> { let addr = "[::1]:50051".parse().unwrap(); let greeter = MyGreeter::default(); Server::builder() .serve(addr, hello_world::GreeterServer::new(greeter)) .await?; Ok(()) }