tonic-build: option to emit Arc<Self> as server receiver (#1352)

This implements an option to emit `Arc<Self>` instead of `&self` in
server traits. This enables implementor to reference `Self` data for
indefinite duration, which may be useful for streaming requests.

Fixes: #1351
This commit is contained in:
Auri
2023-04-19 19:36:43 +00:00
committed by GitHub
parent 8e506df77e
commit 4942dd4a43
11 changed files with 165 additions and 13 deletions
+20
View File
@@ -0,0 +1,20 @@
#![allow(unused_imports)]
use futures::{Stream, StreamExt};
use std::sync::Arc;
use tonic::{Request, Response, Status};
tonic::include_proto!("test");
#[derive(Debug, Default)]
struct Svc;
#[tonic::async_trait]
impl test_server::Test for Svc {
async fn test_request(
self: Arc<Self>,
req: Request<SomeData>,
) -> Result<Response<SomeData>, Status> {
Ok(Response::new(req.into_inner()))
}
}