Trait future_utils::FutureExt
[−]
[src]
pub trait FutureExt: Future + Sized { fn into_boxed(self) -> BoxFuture<Self::Item, Self::Error>
where
Self: 'static, { ... } fn until<C>(self, condition: C) -> Until<Self, C>
where
C: Future<Item = ()>,
Self::Error: From<C::Error>, { ... } fn infallible<E>(self) -> Infallible<Self, E>
where
Self: Future<Error = Void>, { ... } fn log_error(
self,
level: LogLevel,
description: &'static str
) -> LogError<Self>
where
Self: Future<Item = ()>,
Self::Error: Display, { ... } fn finally<D>(self, on_drop: D) -> Finally<Self, D>
where
D: FnOnce(), { ... } fn with_timeout(
self,
duration: Duration,
handle: &Handle
) -> WithTimeout<Self> { ... } fn with_timeout_at(
self,
instant: Instant,
handle: &Handle
) -> WithTimeout<Self> { ... } fn first_ok2<F>(self, other: F) -> FirstOk2<Self, F>
where
F: Future<Item = Self::Item>, { ... } fn while_driving<F: Future>(self, other: F) -> WhileDriving<Self, F> { ... } }
Extension trait for Future
.
Provided Methods
fn into_boxed(self) -> BoxFuture<Self::Item, Self::Error> where
Self: 'static,
Self: 'static,
Wraps a future into a boxed future, making type-checking easier at the expense of an extra layer of indirection at runtime.
fn until<C>(self, condition: C) -> Until<Self, C> where
C: Future<Item = ()>,
Self::Error: From<C::Error>,
C: Future<Item = ()>,
Self::Error: From<C::Error>,
Run this future until some condition is met. If condition
resolves before self
then
None
is returned.
Example
let my_future_with_timeout = my_future.until(Timeout::new(Duration::from_secs(1)));
fn infallible<E>(self) -> Infallible<Self, E> where
Self: Future<Error = Void>,
Self: Future<Error = Void>,
For futures which can't fail (ie. which have error type Void
), cast the error type to
some inferred type.
fn log_error(self, level: LogLevel, description: &'static str) -> LogError<Self> where
Self: Future<Item = ()>,
Self::Error: Display,
Self: Future<Item = ()>,
Self::Error: Display,
Take a future which returns ()
and log its error if it fails. The returned future cannot
fail and will always resolve to ()
.
fn finally<D>(self, on_drop: D) -> Finally<Self, D> where
D: FnOnce(),
D: FnOnce(),
Executes the future and runs the provided callback when the future finishes. The callback will also be run if the entire future is dropped.
fn with_timeout(self, duration: Duration, handle: &Handle) -> WithTimeout<Self>
Runs the future for the given duration, returning its value in an option, or returning
None
if the timeout expires.
fn with_timeout_at(self, instant: Instant, handle: &Handle) -> WithTimeout<Self>
Runs the future until the given instant, returning its value in an option, or returning
None
if the timeout expires.
fn first_ok2<F>(self, other: F) -> FirstOk2<Self, F> where
F: Future<Item = Self::Item>,
F: Future<Item = Self::Item>,
Run two futures in parallel and yield the value of the first to return success. If both futures fail, return both errors.
fn while_driving<F: Future>(self, other: F) -> WhileDriving<Self, F>
Resolves self
while driving other
in parallel.