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

#[must_use = "this `Poll` may be a `Pending` variant, which should be handled"]
pub enum Poll<T> {
    Ready(T),
    Pending,
}
Expand description

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

Variants

Ready(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

通过对包含的 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) 值应用函数,Maps 将 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)) 值应用函数,Maps 将 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)) 值应用函数,Maps 将 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

将该值输入给定的 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

执行转换。

执行转换。

执行转换。

获得所有权后的结果类型。

通常通过克隆从借用数据中创建拥有的数据。 Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into #41263)

recently added

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more

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

执行转换。

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

执行转换。