Fix Transport::and_then (#690)

This commit is contained in:
Pierre Krieger
2018-11-27 19:13:34 +01:00
committed by GitHub
parent e12795d1e6
commit 6cde480c29

View File

@ -149,16 +149,18 @@ where
type Error = T::Error; type Error = T::Error;
fn poll(&mut self) -> Poll<Self::Item, Self::Error> { fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
let future = match self.inner { loop {
Either::A(ref mut future) => { let future = match self.inner {
let item = try_ready!(future.poll()); Either::A(ref mut future) => {
let (f, a) = self.args.take().expect("AndThenFuture has already finished."); let item = try_ready!(future.poll());
f(item, a).into_future() let (f, a) = self.args.take().expect("AndThenFuture has already finished.");
} f(item, a).into_future()
Either::B(ref mut future) => return future.poll() }
}; Either::B(ref mut future) => return future.poll()
self.inner = Either::B(future); };
Ok(Async::NotReady)
self.inner = Either::B(future);
}
} }
} }