W3cubDocs

/Rust

Macro std::task::ready

macro_rules! ready {
    ($e:expr) => { ... };
}
🔬 This is a nightly-only experimental API. (ready_macro #70922)

Extracts the successful type of a Poll<T>.

This macro bakes in propagation of Pending signals by returning early.

Examples

#![feature(future_readiness_fns)]
#![feature(ready_macro)]

use core::task::{ready, Context, Poll};
use core::future::{self, Future};
use core::pin::Pin;

pub fn do_poll(cx: &mut Context<'_>) -> Poll<()> {
    let mut fut = future::ready(42);
    let fut = Pin::new(&mut fut);

    let num = ready!(fut.poll(cx));
    // ... use num

    Poll::Ready(())
}

The ready! call expands to:

let num = match fut.poll(cx) {
    Poll::Ready(t) => t,
    Poll::Pending => return Poll::Pending,
};

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/task/macro.ready.html