diff --git a/futures-util/src/future/fuse.rs b/futures-util/src/future/fuse.rs index cee7e590ba..0530aa753f 100644 --- a/futures-util/src/future/fuse.rs +++ b/futures-util/src/future/fuse.rs @@ -1,8 +1,10 @@ use core::pin::Pin; -use futures_core::future::{Future, FusedFuture}; -use futures_core::task::{LocalWaker, Poll}; + use pin_utils::unsafe_pinned; +use futures_core::future::{FusedFuture, Future}; +use futures_core::task::{LocalWaker, Poll}; + /// A future which "fuses" a future once it has been resolved. /// This wrapper can be used to turn any `Future` into a `FusedFuture`. /// @@ -50,7 +52,7 @@ impl Future for Fuse { None => return Poll::Pending, }; - Pin::set(self.as_mut().future(), None); + Pin::set(&mut self.as_mut().future(), None); Poll::Ready(v) } } diff --git a/futures-util/src/future/into_stream.rs b/futures-util/src/future/into_stream.rs index 0b183557f5..97a4ba9f08 100644 --- a/futures-util/src/future/into_stream.rs +++ b/futures-util/src/future/into_stream.rs @@ -36,7 +36,7 @@ impl Stream for IntoStream { None => return Poll::Ready(None), }; - Pin::set(self.as_mut().future(), None); + Pin::set(&mut self.as_mut().future(), None); Poll::Ready(Some(v)) } } diff --git a/futures-util/src/future/maybe_done.rs b/futures-util/src/future/maybe_done.rs index 6860d666a4..c5f7b2af43 100644 --- a/futures-util/src/future/maybe_done.rs +++ b/futures-util/src/future/maybe_done.rs @@ -107,7 +107,7 @@ impl Future for MaybeDone { MaybeDone::Gone => panic!("MaybeDone polled after value taken"), } }; - Pin::set(self, MaybeDone::Done(res)); + Pin::set(&mut self, MaybeDone::Done(res)); Poll::Ready(()) } } diff --git a/futures-util/src/sink/with_flat_map.rs b/futures-util/src/sink/with_flat_map.rs index 11f3669f2d..aca8803944 100644 --- a/futures-util/src/sink/with_flat_map.rs +++ b/futures-util/src/sink/with_flat_map.rs @@ -102,7 +102,7 @@ where }; } } - Pin::set(stream, None); + Pin::set(&mut stream, None); Poll::Ready(Ok(())) } } diff --git a/futures-util/src/stream/unfold.rs b/futures-util/src/stream/unfold.rs index f84a88b089..6cc30f6f16 100644 --- a/futures-util/src/stream/unfold.rs +++ b/futures-util/src/stream/unfold.rs @@ -96,7 +96,7 @@ impl Stream for Unfold ) -> Poll> { if let Some(state) = self.as_mut().state().take() { let fut = (self.as_mut().f())(state); - Pin::set(self.as_mut().fut(), Some(fut)); + Pin::set(&mut self.as_mut().fut(), Some(fut)); } let step = ready!(self.as_mut().fut().as_pin_mut().unwrap().poll(lw)); diff --git a/futures-util/src/try_future/flatten_sink.rs b/futures-util/src/try_future/flatten_sink.rs index 1d1f07a971..b31d3af04d 100644 --- a/futures-util/src/try_future/flatten_sink.rs +++ b/futures-util/src/try_future/flatten_sink.rs @@ -59,7 +59,7 @@ where Waiting(f) => try_ready!(f.try_poll(lw)), Closed => panic!("poll_ready called after eof"), }; - Pin::set(self.as_mut(), FlattenSink(Ready(resolved_stream))); + Pin::set(&mut self.as_mut(), FlattenSink(Ready(resolved_stream))); if let Ready(resolved_stream) = self.project_pin() { resolved_stream.poll_ready(lw) } else { @@ -99,7 +99,7 @@ where Waiting(_) | Closed => Poll::Ready(Ok(())), }; if res.is_ready() { - Pin::set(self, FlattenSink(Closed)); + Pin::set(&mut self, FlattenSink(Closed)); } res } diff --git a/futures-util/src/try_stream/try_for_each.rs b/futures-util/src/try_stream/try_for_each.rs index 8e26176f80..98b7e6d8e9 100644 --- a/futures-util/src/try_stream/try_for_each.rs +++ b/futures-util/src/try_stream/try_for_each.rs @@ -49,12 +49,12 @@ impl Future for TryForEach if let Some(future) = self.as_mut().future().as_pin_mut() { try_ready!(future.try_poll(lw)); } - Pin::set(self.as_mut().future(), None); + Pin::set(&mut self.as_mut().future(), None); match ready!(self.as_mut().stream().try_poll_next(lw)) { Some(Ok(e)) => { let future = (self.as_mut().f())(e); - Pin::set(self.as_mut().future(), Some(future)); + Pin::set(&mut self.as_mut().future(), Some(future)); } Some(Err(e)) => return Poll::Ready(Err(e)), None => return Poll::Ready(Ok(())),