Fix ListFeaturesStream return type on RouteGuide Tutorial (#586)

This commit is contained in:
Junichi Sugiura
2021-04-04 21:06:33 +02:00
committed by GitHub
parent 830b305b98
commit db22c3568d
2 changed files with 8 additions and 8 deletions
+5 -3
View File
@@ -185,6 +185,7 @@ prost = "0.7"
futures-core = "0.3" futures-core = "0.3"
futures-util = "0.3" futures-util = "0.3"
tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "sync", "time"] } tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "sync", "time"] }
tokio-stream = "0.1"
async-stream = "0.2" async-stream = "0.2"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
@@ -273,6 +274,7 @@ use std::pin::Pin;
use std::sync::Arc; use std::sync::Arc;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use tonic::{Request, Response, Status}; use tonic::{Request, Response, Status};
use tokio_stream::wrappers::ReceiverStream;
``` ```
```rust ```rust
@@ -282,7 +284,7 @@ impl RouteGuide for RouteGuideService {
unimplemented!() unimplemented!()
} }
type ListFeaturesStream = mpsc::Receiver<Result<Feature, Status>>; type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
async fn list_features( async fn list_features(
&self, &self,
@@ -402,7 +404,7 @@ Now let's look at one of our streaming RPCs. `list_features` is a server-side st
need to send back multiple `Feature`s to our client. need to send back multiple `Feature`s to our client.
```rust ```rust
type ListFeaturesStream = mpsc::Receiver<Result<Feature, Status>>; type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
async fn list_features( async fn list_features(
&self, &self,
@@ -419,7 +421,7 @@ async fn list_features(
} }
}); });
Ok(Response::new(rx)) Ok(Response::new(ReceiverStream::new(rx)))
} }
``` ```
+3 -5
View File
@@ -5,6 +5,7 @@ use std::time::Instant;
use futures::{Stream, StreamExt}; use futures::{Stream, StreamExt};
use tokio::sync::mpsc; use tokio::sync::mpsc;
use tokio_stream::wrappers::ReceiverStream;
use tonic::transport::Server; use tonic::transport::Server;
use tonic::{Request, Response, Status}; use tonic::{Request, Response, Status};
@@ -36,8 +37,7 @@ impl RouteGuide for RouteGuideService {
Ok(Response::new(Feature::default())) Ok(Response::new(Feature::default()))
} }
type ListFeaturesStream = type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
Pin<Box<dyn Stream<Item = Result<Feature, Status>> + Send + Sync + 'static>>;
async fn list_features( async fn list_features(
&self, &self,
@@ -59,9 +59,7 @@ impl RouteGuide for RouteGuideService {
println!(" /// done sending"); println!(" /// done sending");
}); });
Ok(Response::new(Box::pin( Ok(Response::new(ReceiverStream::new(rx)))
tokio_stream::wrappers::ReceiverStream::new(rx),
)))
} }
async fn record_route( async fn record_route(