use crate::stream::Stream; use core::future::Future; use core::pin::Pin; use core::task::{Context, Poll}; /// Future for the [`next`](super::StreamExt::next) method. #[derive(Debug)] #[must_use = "futures do nothing unless you `.await` or poll them"] pub struct Next<'a, St: ?Sized> { stream: &'a mut St, } impl Unpin for Next<'_, St> {} impl<'a, St: ?Sized + Stream + Unpin> Next<'a, St> { pub(super) fn new(stream: &'a mut St) -> Self { Next { stream } } } impl Future for Next<'_, St> { type Output = Option; fn poll( mut self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll { Pin::new(&mut self.stream).poll_next(cx) } }