Enum core::task::Poll1.36.0[][src]

pub enum Poll<T> {
    Ready(T),
    Pending,
}
Expand description

指示值是否可用,或者当前任务是否已安排为接收唤醒。

Variants

Ready(T)

表示立即准备好值。

Tuple Fields of Ready

0: T
Pending

表示尚未准备好值。

当一个函数返回 Pending 时,该函数 必须 还必须确保计划在进度完成时唤醒当前任务。

Implementations

通过将函数应用于包含的值,Maps 从 Poll<T>Poll<U>

Examples

Poll<String> 转换为 Poll<usize>,消耗原始值:

let poll_some_string = Poll::Ready(String::from("Hello, World!"));
// `Poll::map` 会按值获取 self,消耗 `poll_some_string`
let poll_some_len = poll_some_string.map(|s| s.len());

assert_eq!(poll_some_len, Poll::Ready(13));
Run

如果轮询是 Poll::Ready 值,则返回 true

Examples
let x: Poll<u32> = Poll::Ready(2);
assert_eq!(x.is_ready(), true);

let x: Poll<u32> = Poll::Pending;
assert_eq!(x.is_ready(), false);
Run

如果轮询是 Pending 值,则返回 true

Examples
let x: Poll<u32> = Poll::Ready(2);
assert_eq!(x.is_pending(), false);

let x: Poll<u32> = Poll::Pending;
assert_eq!(x.is_pending(), true);
Run
🔬 This is a nightly-only experimental API. (poll_ready #89780)

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

当与 ? 运算符结合使用时,该函数会将任何 Poll::Pending 值传播给调用者,并从 Poll::Ready 中提取 T

Examples
#![feature(poll_ready)]

use std::task::{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 = fut.poll(cx).ready()?;
    // ... 使用 num

    Poll::Ready(())
}
Run

通过对包含的 Poll::Ready(Ok) 值应用一个函数,Maps 将 Poll<Result<T, E>> 映射为 Poll<Result<U, E>>,让所有其他变体保持不变。

该函数可用于组合两个函数的结果。

Examples
let res: Poll<Result<u8, _>> = Poll::Ready("12".parse());
let squared = res.map_ok(|n| n * n);
assert_eq!(squared, Poll::Ready(Ok(144)));
Run

通过对包含的 Poll::Ready(Err) 值应用一个函数,将 Poll::Ready<Result<T, E>> 映射为 Poll::Ready<Result<T, F>>,让所有其他变体保持不变。

此函数可用于在处理错误时传递成功的结果。

Examples
let res: Poll<Result<u8, _>> = Poll::Ready("oops".parse());
let res = res.map_err(|_| 0_u8);
assert_eq!(res, Poll::Ready(Err(0)));
Run

通过对包含的 Poll::Ready(Some(Ok)) 值应用一个函数,将 Poll<Option<Result<T, E>>> 映射为 Poll<Option<Result<U, E>>>,让所有其他变体保持不变。

该函数可用于组合两个函数的结果。

Examples
let res: Poll<Option<Result<u8, _>>> = Poll::Ready(Some("12".parse()));
let squared = res.map_ok(|n| n * n);
assert_eq!(squared, Poll::Ready(Some(Ok(144))));
Run

通过对包含的 Poll::Ready(Some(Err)) 值应用一个函数,将 Poll::Ready<Option<Result<T, E>>> 映射为 Poll::Ready<Option<Result<T, F>>>,让所有其他变体保持不变。

此函数可用于在处理错误时传递成功的结果。

Examples
let res: Poll<Option<Result<u8, _>>> = Poll::Ready(Some("oops".parse()));
let res = res.map_err(|_| 0_u8);
assert_eq!(res, Poll::Ready(Some(Err(0))));
Run

Trait Implementations

返回值的副本。 Read more

source 执行复制分配。 Read more

使用给定的格式化程序格式化该值。 Read more

转换为 Ready 变体。

Example
assert_eq!(Poll::from(true), Poll::Ready(true));
Run
🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

从兼容的 Residual 类型构造类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

从兼容的 Residual 类型构造类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

从兼容的 Residual 类型构造类型。 Read more

将该值输入给定的 HasherRead more

将这种类型的切片送入给定的 Hasher 中。 Read more

此方法返回 selfother 之间的 OrderingRead more

比较并返回两个值中的最大值。 Read more

比较并返回两个值中的最小值。 Read more

将值限制在某个时间间隔内。 Read more

此方法测试 selfother 值是否相等,并由 == 使用。 Read more

此方法测试 !=

如果存在,则此方法返回 selfother 值之间的顺序。 Read more

此方法测试的内容少于 (对于 selfother),并且由 < 操作员使用。 Read more

此方法测试小于或等于 (对于 selfother),并且由 <= 运算符使用。 Read more

此方法测试大于 (对于 selfother),并且由 > 操作员使用。 Read more

此方法测试是否大于或等于 (对于 selfother),并且由 >= 运算符使用。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

当不短路时,? 产生的值的类型。

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

短路时作为 ? 的一部分传递给 FromResidual::from_residual 的值的类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

从它的 Output 类型构造类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

? 来决定操作符是应该生成一个值 (因为它返回了 ControlFlow::Continue),还是将一个值传播回调用者 (因为它返回了 ControlFlow::Break)。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

当不短路时,? 产生的值的类型。

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

短路时作为 ? 的一部分传递给 FromResidual::from_residual 的值的类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

从它的 Output 类型构造类型。 Read more

🔬 This is a nightly-only experimental API. (try_trait_v2 #84277)

? 来决定操作符是应该生成一个值 (因为它返回了 ControlFlow::Continue),还是将一个值传播回调用者 (因为它返回了 ControlFlow::Break)。 Read more

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

执行转换。

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。