macro_rules! ready { ($e:expr) => { ... }; }
Extracts the successful type of a Poll<T>
.
This macro bakes in propagation of Pending
signals by returning early.
#![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