Sha256: 7971ec1d5d89ad80390e2a0c51e396257b2e78f1436cce79ea2b55ac2f13b328
Contents?: true
Size: 1.23 KB
Versions: 27
Compression:
Stored size: 1.23 KB
Contents
use core::pin::Pin; use futures_core::future::Future; use futures_core::task::{Context, Poll}; /// A macro which yields to the event loop once. /// /// This is equivalent to returning [`Poll::Pending`](futures_core::task::Poll) /// from a [`Future::poll`](futures_core::future::Future::poll) implementation. /// Similarly, when using this macro, it must be ensured that [`wake`](std::task::Waker::wake) /// is called somewhere when further progress can be made. /// /// This macro is only usable inside of async functions, closures, and blocks. /// It is also gated behind the `async-await` feature of this library, which is /// activated by default. #[macro_export] macro_rules! pending { () => { $crate::__private::async_await::pending_once().await }; } #[doc(hidden)] pub fn pending_once() -> PendingOnce { PendingOnce { is_ready: false } } #[allow(missing_debug_implementations)] #[doc(hidden)] pub struct PendingOnce { is_ready: bool, } impl Future for PendingOnce { type Output = (); fn poll(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Self::Output> { if self.is_ready { Poll::Ready(()) } else { self.is_ready = true; Poll::Pending } } }
Version data entries
27 entries across 27 versions & 1 rubygems