[−][src]Struct fumio::timer::Timeout
Allows a Future
or Stream
to execute for a limited amount of time.
If the future or stream completes before the timeout has expired, then
Timeout
returns the completed value. Otherwise, Timeout
returns an
Error
.
Futures and Streams
The exact behavor depends on if the inner value is a Future
or a Stream
.
In the case of a Future
, Timeout
will require the future to complete by
a fixed deadline. In the case of a Stream
, Timeout
will allow each item
to take the entire timeout before returning an error.
In order to set an upper bound on the processing of the entire stream, then a timeout should be set on the future that processes the stream. For example:
#![feature(async_await)] use tokio::prelude::*; use tokio::sync::mpsc; use std::thread; use std::time::Duration; let (mut tx, rx) = mpsc::unbounded_channel(); thread::spawn(move || { tx.try_send(()).unwrap(); thread::sleep(Duration::from_millis(10)); tx.try_send(()).unwrap(); }); let process = rx.for_each(|item| { // do something with `item` }); // Wrap the future with a `Timeout` set to expire in 10 milliseconds. process.timeout(Duration::from_millis(10)).await;
Cancelation
Cancelling a Timeout
is done by dropping the value. No additional cleanup
or other work is required.
The original future or stream may be obtained by calling Timeout::into_inner
. This
consumes the Timeout
.
Methods
impl<T> Timeout<T>
[src]
ⓘImportant traits for Timeout<T>pub fn new(value: T, timeout: Duration) -> Timeout<T>
[src]
Create a new Timeout
that allows value
to execute for a duration of
at most timeout
.
The exact behavior depends on if value
is a Future
or a Stream
.
See type level documentation for more details.
Examples
Create a new Timeout
set to expire in 10 milliseconds.
#![feature(async_await)] use tokio::timer::Timeout; use tokio::sync::oneshot; use std::time::Duration; let (tx, rx) = oneshot::channel(); // Wrap the future with a `Timeout` set to expire in 10 milliseconds. Timeout::new(rx, Duration::from_millis(10)).await; }
pub fn get_ref(&self) -> &T
[src]
Gets a reference to the underlying value in this timeout.
pub fn get_mut(&mut self) -> &mut T
[src]
Gets a mutable reference to the underlying value in this timeout.
pub fn into_inner(self) -> T
[src]
Consumes this timeout, returning the underlying value.
impl<T> Timeout<T> where
T: Future,
[src]
T: Future,
ⓘImportant traits for Timeout<T>pub fn new_at(future: T, deadline: Instant) -> Timeout<T>
[src]
Create a new Timeout
that completes when future
completes or when
deadline
is reached.
This function differs from new
in that:
- It only accepts
Future
arguments. - It sets an explicit
Instant
at which the timeout expires.
Trait Implementations
impl<T> Future for Timeout<T> where
T: Future,
[src]
T: Future,
type Output = Result<<T as Future>::Output, Elapsed>
The type of value produced on completion.
fn poll(
self: Pin<&mut Timeout<T>>,
cx: &mut Context
) -> Poll<<Timeout<T> as Future>::Output>
[src]
self: Pin<&mut Timeout<T>>,
cx: &mut Context
) -> Poll<<Timeout<T> as Future>::Output>
impl<T> Debug for Timeout<T> where
T: Debug,
[src]
T: Debug,
Auto Trait Implementations
impl<T> Send for Timeout<T> where
T: Send,
T: Send,
impl<T> Unpin for Timeout<T> where
T: Unpin,
T: Unpin,
impl<T> Sync for Timeout<T> where
T: Sync,
T: Sync,
impl<T> !UnwindSafe for Timeout<T>
impl<T> !RefUnwindSafe for Timeout<T>
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>> + ?Sized,
[src]
F: Future<Output = Result<T, E>> + ?Sized,
type Ok = T
The type of successful values yielded by this future
type Error = E
The type of failures yielded by this future
fn try_poll(self: Pin<&mut F>, cx: &mut Context) -> Poll<<F as Future>::Output>
[src]
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]
T: Future + ?Sized,
fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
[src]
F: FnOnce(Self::Output) -> U,
Map this future's output to a different type, returning a new future of the resulting type. Read more
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
[src]
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
Chain on a computation for when a future finished, passing the result of the future to the provided closure f
. Read more
fn left_future<B>(self) -> Either<Self, B> where
B: Future<Output = Self::Output>,
[src]
B: Future<Output = Self::Output>,
Wrap this future in an Either
future, making it the left-hand variant of that Either
. Read more
fn right_future<A>(self) -> Either<A, Self> where
A: Future<Output = Self::Output>,
[src]
A: Future<Output = Self::Output>,
Wrap this future in an Either
future, making it the right-hand variant of that Either
. Read more
fn into_stream(self) -> IntoStream<Self>
[src]
Convert this future into a single element stream. Read more
fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
[src]
Self::Output: Future,
Flatten the execution of this future when the successful result of this future is itself another future. Read more
fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
[src]
Self::Output: Stream,
Flatten the execution of this future when the successful result of this future is a stream. Read more
fn fuse(self) -> Fuse<Self>
[src]
Fuse a future such that poll
will never again be called once it has completed. This method can be used to turn any Future
into a FusedFuture
. Read more
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
[src]
F: FnOnce(&Self::Output),
Do something with the output of a future before passing it on. Read more
fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe,
[src]
Self: UnwindSafe,
Catches unwinding panics while polling the future. Read more
fn shared(self) -> Shared<Self> where
Self::Output: Clone,
[src]
Self::Output: Clone,
Create a cloneable handle to this future where all handles will resolve to the same result. Read more
fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a + Send>> where
Self: Send + 'a,
[src]
Self: Send + 'a,
Wrap the future in a Box, pinning it. Read more
fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>> where
Self: 'a,
[src]
Self: 'a,
Wrap the future in a Box, pinning it. Read more
fn unit_error(self) -> UnitError<Self>
[src]
Turns a Future<Output = T>
into a TryFuture<Ok = T, Error = ()
>. Read more
fn never_error(self) -> NeverError<Self>
[src]
Turns a Future<Output = T>
into a TryFuture<Ok = T, Error = Never
>. Read more
fn poll_unpin(&mut self, cx: &mut Context) -> Poll<Self::Output> where
Self: Unpin,
[src]
Self: Unpin,
A convenience for calling Future::poll
on Unpin
future types.
fn now_or_never(self) -> Option<Self::Output>
[src]
Evaluates and consumes the future, returning the resulting output if the future is ready after the first call to Future::poll
. Read more
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src]
Fut: TryFuture + ?Sized,
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
F: FnOnce(Self::Ok) -> T,
[src]
F: FnOnce(Self::Ok) -> T,
Maps this future's success value to a different value. Read more
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
[src]
F: FnOnce(Self::Error) -> E,
Maps this future's error value to a different value. Read more
fn err_into<E>(self) -> ErrInto<Self, E> where
Self::Error: Into<E>,
[src]
Self::Error: Into<E>,
Maps this future's Error
to a new error type using the Into
trait. Read more
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
[src]
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
Executes another future after this one resolves successfully. The success value is passed to a closure to create this subsequent future. Read more
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
[src]
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
Executes another future if this one resolves to an error. The error value is passed to a closure to create this subsequent future. Read more
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnOnce(&Self::Ok),
[src]
F: FnOnce(&Self::Ok),
Do something with the success value of a future before passing it on. Read more
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnOnce(&Self::Error),
[src]
F: FnOnce(&Self::Error),
Do something with the error value of a future before passing it on. Read more
fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
[src]
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
Flatten the execution of this future when the successful result of this future is a stream. Read more
fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
F: FnOnce(Self::Error) -> Self::Ok,
[src]
F: FnOnce(Self::Error) -> Self::Ok,
Unwraps this future's ouput, producing a future with this future's Ok
type as its Output
type. Read more
fn into_future(self) -> IntoFuture<Self>
[src]
Wraps a [TryFuture
] into a type that implements Future
. Read more
fn try_poll_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
A convenience method for calling [TryFuture::try_poll
] on [Unpin
] future types. Read more