GRPC support for Poem

Crates.io version Download docs.rs docs Unsafe Rust forbidden rustc 1.81.0+
## Example ```rust use poem::{listener::TcpListener, Server}; use poem_grpc::{Request, Response, RouteGrpc, Status}; poem_grpc::include_proto!("helloworld"); struct GreeterService; impl Greeter for GreeterService { async fn say_hello( &self, request: Request, ) -> Result, Status> { let reply = HelloReply { message: format!("Hello {}!", request.into_inner().name), }; Ok(Response::new(reply)) } } #[tokio::main] async fn main() -> Result<(), std::io::Error> { let route = RouteGrpc::new().add_service(GreeterServer::new(GreeterService)); Server::new(TcpListener::bind("0.0.0.0:3000")) .run(route) .await } ``` ## Safety This crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% Safe Rust. ## MSRV The minimum supported Rust version for this crate is `1.81.0`. ## Contributing :balloon: Thanks for your help improving the project! We are so happy to have you! ## License Licensed under either of * Apache License, Version 2.0,([LICENSE-APACHE](./LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](./LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Poem by you, shall be licensed as Apache, without any additional terms or conditions.