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.
Variants§
Ready(T)
Represents that a value is immediately ready.
Pending
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.
Implementations§
Source§impl<T> Poll<T>
impl<T> Poll<T>
1.36.0 · Sourcepub fn map<U, F>(self, f: F) -> Poll<U>where
F: FnOnce(T) -> U,
pub fn map<U, F>(self, f: F) -> Poll<U>where
F: FnOnce(T) -> U,
Maps a Poll<T> to Poll<U> by applying a function to a contained value.
§Examples
Converts a Poll<String> into a Poll<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) · Sourcepub const fn is_ready(&self) -> bool
pub const fn is_ready(&self) -> bool
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) · Sourcepub const fn is_pending(&self) -> bool
pub const fn is_pending(&self) -> bool
Source§impl<T, E> Poll<Result<T, E>>
impl<T, E> Poll<Result<T, E>>
1.36.0 · Sourcepub fn map_ok<U, F>(self, f: F) -> Poll<Result<U, E>>where
F: FnOnce(T) -> U,
pub fn map_ok<U, F>(self, f: F) -> Poll<Result<U, E>>where
F: FnOnce(T) -> U,
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 · Sourcepub fn map_err<U, F>(self, f: F) -> Poll<Result<T, U>>where
F: FnOnce(E) -> U,
pub fn map_err<U, F>(self, f: F) -> Poll<Result<T, U>>where
F: FnOnce(E) -> U,
Maps a Poll::Ready<Result<T, E>> to Poll::Ready<Result<T, U>> 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)));Source§impl<T, E> Poll<Option<Result<T, E>>>
impl<T, E> Poll<Option<Result<T, E>>>
1.51.0 · Sourcepub fn map_ok<U, F>(self, f: F) -> Poll<Option<Result<U, E>>>where
F: FnOnce(T) -> U,
pub fn map_ok<U, F>(self, f: F) -> Poll<Option<Result<U, E>>>where
F: FnOnce(T) -> U,
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 · Sourcepub fn map_err<U, F>(self, f: F) -> Poll<Option<Result<T, U>>>where
F: FnOnce(E) -> U,
pub fn map_err<U, F>(self, f: F) -> Poll<Option<Result<T, U>>>where
F: FnOnce(E) -> U,
Maps a Poll::Ready<Option<Result<T, E>>> to
Poll::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))));Trait Implementations§
Source§impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Option<Result<T, F>>>where
F: From<E>,
impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Option<Result<T, F>>>where
F: From<E>,
Source§fn from_residual(x: Result<Infallible, E>) -> Poll<Option<Result<T, F>>>
fn from_residual(x: Result<Infallible, E>) -> Poll<Option<Result<T, F>>>
try_trait_v2)Residual type. Read moreSource§impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Result<T, F>>where
F: From<E>,
impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Result<T, F>>where
F: From<E>,
Source§fn from_residual(x: Result<Infallible, E>) -> Poll<Result<T, F>>
fn from_residual(x: Result<Infallible, E>) -> Poll<Result<T, F>>
try_trait_v2)Residual type. Read more1.36.0 · Source§impl<T> Ord for Poll<T>where
T: Ord,
impl<T> Ord for Poll<T>where
T: Ord,
1.36.0 · Source§impl<T> PartialOrd for Poll<T>where
T: PartialOrd,
impl<T> PartialOrd for Poll<T>where
T: PartialOrd,
Source§impl<T, E> Try for Poll<Option<Result<T, E>>>
impl<T, E> Try for Poll<Option<Result<T, E>>>
Source§type Output = Poll<Option<T>>
type Output = Poll<Option<T>>
try_trait_v2)? when not short-circuiting.Source§type Residual = Result<Infallible, E>
type Residual = Result<Infallible, E>
try_trait_v2)FromResidual::from_residual
as part of ? when short-circuiting. Read moreSource§fn from_output(
c: <Poll<Option<Result<T, E>>> as Try>::Output,
) -> Poll<Option<Result<T, E>>>
fn from_output( c: <Poll<Option<Result<T, E>>> as Try>::Output, ) -> Poll<Option<Result<T, E>>>
try_trait_v2)Output type. Read moreSource§fn branch(
self,
) -> ControlFlow<<Poll<Option<Result<T, E>>> as Try>::Residual, <Poll<Option<Result<T, E>>> as Try>::Output>
fn branch( self, ) -> ControlFlow<<Poll<Option<Result<T, E>>> as Try>::Residual, <Poll<Option<Result<T, E>>> as Try>::Output>
try_trait_v2)? 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 moreSource§impl<T, E> Try for Poll<Result<T, E>>
impl<T, E> Try for Poll<Result<T, E>>
Source§type Output = Poll<T>
type Output = Poll<T>
try_trait_v2)? when not short-circuiting.Source§type Residual = Result<Infallible, E>
type Residual = Result<Infallible, E>
try_trait_v2)FromResidual::from_residual
as part of ? when short-circuiting. Read moreSource§fn from_output(c: <Poll<Result<T, E>> as Try>::Output) -> Poll<Result<T, E>>
fn from_output(c: <Poll<Result<T, E>> as Try>::Output) -> Poll<Result<T, E>>
try_trait_v2)Output type. Read moreSource§fn branch(
self,
) -> ControlFlow<<Poll<Result<T, E>> as Try>::Residual, <Poll<Result<T, E>> as Try>::Output>
fn branch( self, ) -> ControlFlow<<Poll<Result<T, E>> as Try>::Residual, <Poll<Result<T, E>> as Try>::Output>
try_trait_v2)? 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 moreimpl<T> Copy for Poll<T>where
T: Copy,
impl<T> Eq for Poll<T>where
T: Eq,
impl<T> StructuralPartialEq for Poll<T>
Auto Trait Implementations§
impl<T> Freeze for Poll<T>where
T: Freeze,
impl<T> RefUnwindSafe for Poll<T>where
T: RefUnwindSafe,
impl<T> Send for Poll<T>where
T: Send,
impl<T> Sync for Poll<T>where
T: Sync,
impl<T> Unpin for Poll<T>where
T: Unpin,
impl<T> UnwindSafe for Poll<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W), ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
Source§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X), ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
Source§impl<T1> DecodeUntypedSlice for T1where
T1: From<UntypedValue>,
impl<T1> DecodeUntypedSlice for T1where
T1: From<UntypedValue>,
Source§fn decode_untyped_slice(results: &[UntypedValue]) -> Result<T1, UntypedError>
fn decode_untyped_slice(results: &[UntypedValue]) -> Result<T1, UntypedError>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more