diff --git a/network-grpc/src/service.rs b/network-grpc/src/service.rs index 0ea2eb581..525ec8e6d 100644 --- a/network-grpc/src/service.rs +++ b/network-grpc/src/service.rs @@ -304,10 +304,8 @@ where Intermediate => unreachable!(), }; if let WaitingSink(_, stream) = mem::replace(&mut self.state, Intermediate) { - // Fuse the stream to work around - // https://github.com/rust-lang-nursery/futures-rs/pull/1864 - let stream = RequestStream::new(stream).fuse(); - self.state = Forwarding(stream.forward(sink)); + let stream = RequestStream::new(stream); + self.state = Forwarding(sink.send_all(stream)); } else { unreachable!() } @@ -318,7 +316,7 @@ where mod stream_forward { use super::{FromProtobuf, RequestStream}; use futures::prelude::*; - use futures::stream::{Forward, Fuse}; + use futures::sink::SendAll; pub enum State where @@ -328,7 +326,7 @@ mod stream_forward { ::SinkItem: FromProtobuf, { WaitingSink(F, St), - Forwarding(Forward::SinkItem, St>>, F::Item>), + Forwarding(SendAll::SinkItem, St>>), Intermediate, } }