Poll in std::task - Rust (original) (raw)
pub enum Poll<T> {
Ready(T),
Pending,
}
Expand description
Indicates whether a value is available or if the current task has been scheduled to receive a wakeup instead.
This is returned by Future::poll.
§1.36.0
Represents that a value is immediately ready.
§1.36.0
Represents that a value is not ready yet.
When a function returns Pending
, the function must also ensure that the current task is scheduled to be awoken when progress can be made.
1.36.0 · Source
Maps a Poll<T>
to Poll<U>
by applying a function to a contained value.
§Examples
Converts a Poll<[String](../../std/string/struct.String.html "String")>
into a Poll<[usize](../primitive.usize.html "primitive usize")>
, consuming the original:
let poll_some_string = Poll::Ready(String::from("Hello, World!"));
// `Poll::map` takes self *by value*, consuming `poll_some_string`
let poll_some_len = poll_some_string.map(|s| s.len());
assert_eq!(poll_some_len, Poll::Ready(13));
1.36.0 (const: 1.49.0) · Source
Returns true
if the poll is a Poll::Ready value.
§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);
1.36.0 (const: 1.49.0) · Source
Returns true
if the poll is a Pending value.
§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);
1.36.0 · Source
Maps a Poll<Result<T, E>>
to Poll<Result<U, E>>
by applying a function to a contained Poll::Ready(Ok)
value, leaving all other variants untouched.
This function can be used to compose the results of two functions.
§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)));
1.36.0 · Source
Maps a Poll::Ready<Result<T, E>>
to Poll::Ready<Result<T, F>>
by applying a function to a contained Poll::Ready(Err)
value, leaving all other variants untouched.
This function can be used to pass through a successful result while handling an error.
§Examples
let res: Poll<Result<u8, _>> = Poll::Ready("oops".parse());
let res = res.map_err(|_| 0_u8);
assert_eq!(res, Poll::Ready(Err(0)));
1.51.0 · Source
Maps a Poll<Option<Result<T, E>>>
to Poll<Option<Result<U, E>>>
by applying a function to a contained Poll::Ready(Some(Ok))
value, leaving all other variants untouched.
This function can be used to compose the results of two functions.
§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))));
1.51.0 · Source
Maps a Poll::Ready<Option<Result<T, E>>>
toPoll::Ready<Option<Result<T, F>>>
by applying a function to a contained Poll::Ready(Some(Err))
value, leaving all other variants untouched.
This function can be used to pass through a successful result while handling an error.
§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))));
Moves the value into a Poll::Ready to make a Poll<T>
.
§Example
assert_eq!(Poll::from(true), Poll::Ready(true));
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Constructs the type from a compatible Residual
type. Read more
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Constructs the type from a compatible Residual
type. Read more
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self
and other
values if one exists. Read more
Tests less than (for self
and other
) and is used by the <
operator. Read more
Tests less than or equal to (for self
and other
) and is used by the<=
operator. Read more
Tests greater than (for self
and other
) and is used by the >
operator. Read more
Tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
The type of the value produced by ?
when not short-circuiting.
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Constructs the type from its Output
type. Read more
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Used in ?
to decide whether the operator should produce a value (because this returned ControlFlow::Continue) or propagate a value back to the caller (because this returned ControlFlow::Break). Read more
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
The type of the value produced by ?
when not short-circuiting.
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Constructs the type from its Output
type. Read more
🔬This is a nightly-only experimental API. (try_trait_v2
#84277)
Used in ?
to decide whether the operator should produce a value (because this returned ControlFlow::Continue) or propagate a value back to the caller (because this returned ControlFlow::Break). Read more