Struct tokio_timer::Timeout [−][src]
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:
// import the `timeout` function, usually this is done // with `use tokio::prelude::*` use tokio::prelude::FutureExt; use futures::Stream; use futures::sync::mpsc; use std::time::Duration; let (tx, rx) = mpsc::unbounded(); 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))
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.
Implementations
impl<T> Timeout<T>[src]
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.
use tokio::timer::Timeout; use futures::Future; use futures::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))
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: Future> Timeout<T>[src]
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
Futurearguments. - It sets an explicit
Instantat which the timeout expires.
Trait Implementations
impl<T: Debug> Debug for Timeout<T>[src]
impl<T> Future for Timeout<T> where
T: Future, [src]
T: Future,
type Item = T::Item
The type of value that this future will resolved with if it is successful. Read more
type Error = Error<T::Error>
The type of error that this future will resolve with if it fails in a normal fashion. Read more
fn poll(&mut self) -> Poll<Self::Item, Self::Error>[src]
pub fn wait(self) -> Result<Self::Item, Self::Error>[src]
pub fn map<F, U>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Item) -> U, [src]
F: FnOnce(Self::Item) -> U,
pub fn map_err<F, E>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E, [src]
F: FnOnce(Self::Error) -> E,
pub fn from_err<E>(self) -> FromErr<Self, E> where
E: From<Self::Error>, [src]
E: From<Self::Error>,
pub fn then<F, B>(self, f: F) -> Then<Self, B, F> where
F: FnOnce(Result<Self::Item, Self::Error>) -> B,
B: IntoFuture, [src]
F: FnOnce(Result<Self::Item, Self::Error>) -> B,
B: IntoFuture,
pub fn and_then<F, B>(self, f: F) -> AndThen<Self, B, F> where
F: FnOnce(Self::Item) -> B,
B: IntoFuture<Error = Self::Error>, [src]
F: FnOnce(Self::Item) -> B,
B: IntoFuture<Error = Self::Error>,
pub fn or_else<F, B>(self, f: F) -> OrElse<Self, B, F> where
F: FnOnce(Self::Error) -> B,
B: IntoFuture<Item = Self::Item>, [src]
F: FnOnce(Self::Error) -> B,
B: IntoFuture<Item = Self::Item>,
pub fn select<B>(self, other: B) -> Select<Self, <B as IntoFuture>::Future> where
B: IntoFuture<Item = Self::Item, Error = Self::Error>, [src]
B: IntoFuture<Item = Self::Item, Error = Self::Error>,
pub fn select2<B>(self, other: B) -> Select2<Self, <B as IntoFuture>::Future> where
B: IntoFuture, [src]
B: IntoFuture,
pub fn join<B>(self, other: B) -> Join<Self, <B as IntoFuture>::Future> where
B: IntoFuture<Error = Self::Error>, [src]
B: IntoFuture<Error = Self::Error>,
pub fn join3<B, C>(
self,
b: B,
c: C
) -> Join3<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>, [src]
self,
b: B,
c: C
) -> Join3<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>,
pub fn join4<B, C, D>(
self,
b: B,
c: C,
d: D
) -> Join4<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future, <D as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>,
D: IntoFuture<Error = Self::Error>, [src]
self,
b: B,
c: C,
d: D
) -> Join4<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future, <D as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>,
D: IntoFuture<Error = Self::Error>,
pub fn join5<B, C, D, E>(
self,
b: B,
c: C,
d: D,
e: E
) -> Join5<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future, <D as IntoFuture>::Future, <E as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>,
D: IntoFuture<Error = Self::Error>,
E: IntoFuture<Error = Self::Error>, [src]
self,
b: B,
c: C,
d: D,
e: E
) -> Join5<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future, <D as IntoFuture>::Future, <E as IntoFuture>::Future> where
C: IntoFuture<Error = Self::Error>,
B: IntoFuture<Error = Self::Error>,
D: IntoFuture<Error = Self::Error>,
E: IntoFuture<Error = Self::Error>,
pub fn into_stream(self) -> IntoStream<Self>[src]
pub fn flatten(self) -> Flatten<Self> where
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error: From<Self::Error>, [src]
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error: From<Self::Error>,
pub fn flatten_stream(self) -> FlattenStream<Self> where
Self::Item: Stream,
<Self::Item as Stream>::Error == Self::Error, [src]
Self::Item: Stream,
<Self::Item as Stream>::Error == Self::Error,
pub fn fuse(self) -> Fuse<Self>[src]
pub fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Item), [src]
F: FnOnce(&Self::Item),
pub fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe, [src]
Self: UnwindSafe,
pub fn shared(self) -> Shared<Self>[src]
impl<T> Stream for Timeout<T> where
T: Stream, [src]
T: Stream,
type Item = T::Item
The type of item this stream will yield on success.
type Error = Error<T::Error>
The type of error this stream may generate.
fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error>[src]
pub fn wait(self) -> Wait<Self>[src]
pub fn into_future(self) -> StreamFuture<Self>[src]
pub fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> U, [src]
F: FnMut(Self::Item) -> U,
pub fn map_err<U, F>(self, f: F) -> MapErr<Self, F> where
F: FnMut(Self::Error) -> U, [src]
F: FnMut(Self::Error) -> U,
pub fn filter<F>(self, f: F) -> Filter<Self, F> where
F: FnMut(&Self::Item) -> bool, [src]
F: FnMut(&Self::Item) -> bool,
pub fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<B>, [src]
F: FnMut(Self::Item) -> Option<B>,
pub fn then<F, U>(self, f: F) -> Then<Self, F, U> where
F: FnMut(Result<Self::Item, Self::Error>) -> U,
U: IntoFuture, [src]
F: FnMut(Result<Self::Item, Self::Error>) -> U,
U: IntoFuture,
pub fn and_then<F, U>(self, f: F) -> AndThen<Self, F, U> where
F: FnMut(Self::Item) -> U,
U: IntoFuture<Error = Self::Error>, [src]
F: FnMut(Self::Item) -> U,
U: IntoFuture<Error = Self::Error>,
pub fn or_else<F, U>(self, f: F) -> OrElse<Self, F, U> where
F: FnMut(Self::Error) -> U,
U: IntoFuture<Item = Self::Item>, [src]
F: FnMut(Self::Error) -> U,
U: IntoFuture<Item = Self::Item>,
pub fn collect(self) -> Collect<Self>[src]
pub fn concat2(self) -> Concat2<Self> where
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default, [src]
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default,
pub fn concat(self) -> Concat<Self> where
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator, [src]
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
pub fn fold<F, T, Fut>(self, init: T, f: F) -> Fold<Self, F, Fut, T> where
F: FnMut(T, Self::Item) -> Fut,
Fut: IntoFuture<Item = T>,
Self::Error: From<<Fut as IntoFuture>::Error>, [src]
F: FnMut(T, Self::Item) -> Fut,
Fut: IntoFuture<Item = T>,
Self::Error: From<<Fut as IntoFuture>::Error>,
pub fn flatten(self) -> Flatten<Self> where
Self::Item: Stream,
<Self::Item as Stream>::Error: From<Self::Error>, [src]
Self::Item: Stream,
<Self::Item as Stream>::Error: From<Self::Error>,
pub fn skip_while<P, R>(self, pred: P) -> SkipWhile<Self, P, R> where
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R, [src]
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
pub fn take_while<P, R>(self, pred: P) -> TakeWhile<Self, P, R> where
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R, [src]
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
pub fn for_each<F, U>(self, f: F) -> ForEach<Self, F, U> where
F: FnMut(Self::Item) -> U,
U: IntoFuture<Item = (), Error = Self::Error>, [src]
F: FnMut(Self::Item) -> U,
U: IntoFuture<Item = (), Error = Self::Error>,
pub fn from_err<E>(self) -> FromErr<Self, E> where
E: From<Self::Error>, [src]
E: From<Self::Error>,
pub fn take(self, amt: u64) -> Take<Self>[src]
pub fn skip(self, amt: u64) -> Skip<Self>[src]
pub fn fuse(self) -> Fuse<Self>[src]
pub fn by_ref(&mut self) -> &mut Self[src]
pub fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe, [src]
Self: UnwindSafe,
pub fn buffered(self, amt: usize) -> Buffered<Self> where
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error, [src]
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
pub fn buffer_unordered(self, amt: usize) -> BufferUnordered<Self> where
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error, [src]
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
pub fn merge<S>(self, other: S) -> Merge<Self, S> where
S: Stream<Error = Self::Error>, [src]
S: Stream<Error = Self::Error>,
pub fn zip<S>(self, other: S) -> Zip<Self, S> where
S: Stream<Error = Self::Error>, [src]
S: Stream<Error = Self::Error>,
pub fn chain<S>(self, other: S) -> Chain<Self, S> where
S: Stream<Item = Self::Item, Error = Self::Error>, [src]
S: Stream<Item = Self::Item, Error = Self::Error>,
pub fn peekable(self) -> Peekable<Self>[src]
pub fn chunks(self, capacity: usize) -> Chunks<Self>[src]
pub fn select<S>(self, other: S) -> Select<Self, S> where
S: Stream<Item = Self::Item, Error = Self::Error>, [src]
S: Stream<Item = Self::Item, Error = Self::Error>,
pub fn forward<S>(self, sink: S) -> Forward<Self, S> where
S: Sink<SinkItem = Self::Item>,
Self::Error: From<<S as Sink>::SinkError>, [src]
S: Sink<SinkItem = Self::Item>,
Self::Error: From<<S as Sink>::SinkError>,
pub fn split(self) -> (SplitSink<Self>, SplitStream<Self>) where
Self: Sink, [src]
Self: Sink,
pub fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item), [src]
F: FnMut(&Self::Item),
pub fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnMut(&Self::Error), [src]
F: FnMut(&Self::Error),
Auto Trait Implementations
impl<T> !RefUnwindSafe for Timeout<T>
impl<T> Send for Timeout<T> where
T: Send,
T: Send,
impl<T> Sync for Timeout<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Timeout<T> where
T: Unpin,
T: Unpin,
impl<T> !UnwindSafe for Timeout<T>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<F> IntoFuture for F where
F: Future, [src]
F: Future,
type Future = F
The future that this type can be converted into.
type Item = <F as Future>::Item
The item that the future may resolve with.
type Error = <F as Future>::Error
The error that the future may resolve with.
pub fn into_future(self) -> F[src]
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.
pub 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>,