#[must_use = "this `Poll` may be a `Pending` variant, which should be handled"]
pub enum Poll<T> {
Ready(T),
Pending,
}
Expand description
指示值是否可用,或者当前任务是否已安排为接收唤醒。
表示尚未准备好值。
当一个函数返回 Pending
时,该函数 必须 还必须确保计划在进度完成时唤醒当前任务。
通过将函数应用于包含的值,Maps 从 Poll<T>
到 Poll<U>
。
将 Poll<
String
>
转换为 Poll<
usize
>
,消耗原始值:
let poll_some_string = Poll::Ready(String::from("Hello, World!"));
let poll_some_len = poll_some_string.map(|s| s.len());
assert_eq!(poll_some_len, Poll::Ready(13));
Run
1.36.0 (const: 1.49.0)[src]
如果轮询是 Poll::Ready
值,则返回 true
。
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
1.36.0 (const: 1.49.0)[src]
如果轮询是 Pending
值,则返回 true
。
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>>
,让所有其他成员保持不变。
该函数可用于组合两个函数的结果。
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>>
,让所有其他成员保持不变。
此函数可用于在处理错误时传递成功的结果。
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>>>
,让所有其他成员保持不变。
该函数可用于组合两个函数的结果。
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>>>
,让所有其他成员保持不变。
此函数可用于在处理错误时传递成功的结果。
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
转换为 Ready
成员。
assert_eq!(Poll::from(true), Poll::Ready(true));
Run
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
此方法测试的内容少于 (对于 self
和 other
),并且由 <
操作员使用。 Read more
此方法测试小于或等于 (对于 self
和 other
),并且由 <=
运算符使用。 Read more
此方法测试大于 (对于 self
和 other
),并且由 >
操作员使用。 Read more
此方法测试是否大于或等于 (对于 self
和 other
),并且由 >=
运算符使用。 Read more
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)
🔬 This is a nightly-only experimental API. (
try_trait_v2
#84277)