Macro std::task::ready

1.64.0 · source ·
pub macro ready($e:expr) {
    ...
}
Expand description

提取 Poll<T> 的成功类型。

该宏通过提早返回来传播 Pending 信号。

Examples

use std::task::{ready, Context, Poll};
use std::future::{self, Future};
use std::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));
    // ... 使用 num

    Poll::Ready(())
}
Run

ready! 调用扩展为:

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