Struct Until

Source
pub struct Until<T, C> { /* private fields */ }
Expand description

Runs a stream or future until some condition is met.

Implementations§

Source§

impl<T, C> Until<T, C>

Source

pub fn new(orig: T, condition: C) -> Until<T, C>

Trait Implementations§

Source§

impl<T, C> Future for Until<T, C>
where T: Future, C: Future<Item = ()>, T::Error: From<C::Error>,

Source§

type Item = Option<<T as Future>::Item>

The type of value that this future will resolved with if it is successful.
Source§

type Error = <T as Future>::Error

The type of error that this future will resolve with if it fails in a normal fashion.
Source§

fn poll(&mut self) -> Result<Async<Option<T::Item>>, T::Error>

Query this future to see if its value has become available, registering interest if it is not. Read more
Source§

fn wait(self) -> Result<Self::Item, Self::Error>
where Self: Sized,

Block the current thread until this future is resolved. Read more
Source§

fn map<F, U>(self, f: F) -> Map<Self, F>
where F: FnOnce(Self::Item) -> U, Self: Sized,

Map this future’s result to a different type, returning a new future of the resulting type. Read more
Source§

fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
where F: FnOnce(Self::Error) -> E, Self: Sized,

Map this future’s error to a different error, returning a new future. Read more
Source§

fn from_err<E>(self) -> FromErr<Self, E>
where E: From<Self::Error>, Self: Sized,

Map this future’s error to any error implementing From for this future’s Error, returning a new future. Read more
Source§

fn then<F, B>(self, f: F) -> Then<Self, B, F>
where F: FnOnce(Result<Self::Item, Self::Error>) -> B, B: IntoFuture, Self: Sized,

Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
Source§

fn and_then<F, B>(self, f: F) -> AndThen<Self, B, F>
where F: FnOnce(Self::Item) -> B, B: IntoFuture<Error = Self::Error>, Self: Sized,

Execute another future after this one has resolved successfully. Read more
Source§

fn or_else<F, B>(self, f: F) -> OrElse<Self, B, F>
where F: FnOnce(Self::Error) -> B, B: IntoFuture<Item = Self::Item>, Self: Sized,

Execute another future if this one resolves with an error. Read more
Source§

fn select<B>(self, other: B) -> Select<Self, <B as IntoFuture>::Future>
where B: IntoFuture<Item = Self::Item, Error = Self::Error>, Self: Sized,

Waits for either one of two futures to complete. Read more
Source§

fn select2<B>(self, other: B) -> Select2<Self, <B as IntoFuture>::Future>
where B: IntoFuture, Self: Sized,

Waits for either one of two differently-typed futures to complete. Read more
Source§

fn join<B>(self, other: B) -> Join<Self, <B as IntoFuture>::Future>
where B: IntoFuture<Error = Self::Error>, Self: Sized,

Joins the result of two futures, waiting for them both to complete. Read more
Source§

fn join3<B, C>( self, b: B, c: C, ) -> Join3<Self, <B as IntoFuture>::Future, <C as IntoFuture>::Future>
where B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

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 B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, D: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

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 B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, D: IntoFuture<Error = Self::Error>, E: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

fn into_stream(self) -> IntoStream<Self>
where Self: Sized,

Convert this future into a single element stream. Read more
Source§

fn flatten(self) -> Flatten<Self>
where Self::Item: IntoFuture, <Self::Item as IntoFuture>::Error: From<Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is itself another future. Read more
Source§

fn flatten_stream(self) -> FlattenStream<Self>
where Self::Item: Stream<Error = Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is a stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a future such that poll will never again be called once it has completed. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnOnce(&Self::Item), Self: Sized,

Do something with the item of a future, passing it on. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the future. Read more
Source§

fn shared(self) -> Shared<Self>
where Self: Sized,

Create a cloneable handle to this future where all handles will resolve to the same result. Read more
Source§

impl<T, C> Stream for Until<T, C>
where T: Stream, C: Future<Item = ()>, T::Error: From<C::Error>,

Source§

type Item = <T as Stream>::Item

The type of item this stream will yield on success.
Source§

type Error = <T as Stream>::Error

The type of error this stream may generate.
Source§

fn poll(&mut self) -> Result<Async<Option<T::Item>>, T::Error>

Attempt to pull out the next value of this stream, returning None if the stream is finished. Read more
Source§

fn wait(self) -> Wait<Self>
where Self: Sized,

Creates an iterator which blocks the current thread until each item of this stream is resolved. Read more
Source§

fn into_future(self) -> StreamFuture<Self>
where Self: Sized,

Converts this stream into a Future. Read more
Source§

fn map<U, F>(self, f: F) -> Map<Self, F>
where F: FnMut(Self::Item) -> U, Self: Sized,

Converts a stream of type T to a stream of type U. Read more
Source§

fn map_err<U, F>(self, f: F) -> MapErr<Self, F>
where F: FnMut(Self::Error) -> U, Self: Sized,

Converts a stream of error type T to a stream of error type U. Read more
Source§

fn filter<F>(self, f: F) -> Filter<Self, F>
where F: FnMut(&Self::Item) -> bool, Self: Sized,

Filters the values produced by this stream according to the provided predicate. Read more
Source§

fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F>
where F: FnMut(Self::Item) -> Option<B>, Self: Sized,

Filters the values produced by this stream while simultaneously mapping them to a different type. Read more
Source§

fn then<F, U>(self, f: F) -> Then<Self, F, U>
where F: FnMut(Result<Self::Item, Self::Error>) -> U, U: IntoFuture, Self: Sized,

Chain on a computation for when a value is ready, passing the resulting item to the provided closure f. Read more
Source§

fn and_then<F, U>(self, f: F) -> AndThen<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Error = Self::Error>, Self: Sized,

Chain on a computation for when a value is ready, passing the successful results to the provided closure f. Read more
Source§

fn or_else<F, U>(self, f: F) -> OrElse<Self, F, U>
where F: FnMut(Self::Error) -> U, U: IntoFuture<Item = Self::Item>, Self: Sized,

Chain on a computation for when an error happens, passing the erroneous result to the provided closure f. Read more
Source§

fn collect(self) -> Collect<Self>
where Self: Sized,

Collect all of the values of this stream into a vector, returning a future representing the result of that computation. Read more
Source§

fn concat2(self) -> Concat2<Self>
where Self: Sized, Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,

Concatenate all results of a stream into a single extendable destination, returning a future representing the end result. Read more
Source§

fn concat(self) -> Concat<Self>
where Self: Sized, Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator,

👎Deprecated since 0.1.14: please use Stream::concat2 instead
Concatenate all results of a stream into a single extendable destination, returning a future representing the end result. Read more
Source§

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>, Self: Sized,

Execute an accumulating computation over a stream, collecting all the values into one final result. Read more
Source§

fn flatten(self) -> Flatten<Self>
where Self::Item: Stream, <Self::Item as Stream>::Error: From<Self::Error>, Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
Source§

fn skip_while<P, R>(self, pred: P) -> SkipWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Skip elements on this stream while the predicate provided resolves to true. Read more
Source§

fn take_while<P, R>(self, pred: P) -> TakeWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Take elements from this stream while the predicate provided resolves to true. Read more
Source§

fn for_each<F, U>(self, f: F) -> ForEach<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Item = (), Error = Self::Error>, Self: Sized,

Runs this stream to completion, executing the provided closure for each element on the stream. Read more
Source§

fn from_err<E>(self) -> FromErr<Self, E>
where E: From<Self::Error>, Self: Sized,

Map this stream’s error to any error implementing From for this stream’s Error, returning a new stream. Read more
Source§

fn take(self, amt: u64) -> Take<Self>
where Self: Sized,

Creates a new stream of at most amt items of the underlying stream. Read more
Source§

fn skip(self, amt: u64) -> Skip<Self>
where Self: Sized,

Creates a new stream which skips amt items of the underlying stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a stream such that poll will never again be called once it has finished. Read more
Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Borrows a stream, rather than consuming it. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the stream. Read more
Source§

fn buffered(self, amt: usize) -> Buffered<Self>
where Self::Item: IntoFuture<Error = Self::Error>, Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
Source§

fn buffer_unordered(self, amt: usize) -> BufferUnordered<Self>
where Self::Item: IntoFuture<Error = Self::Error>, Self: Sized,

An adaptor for creating a buffered list of pending futures (unordered). Read more
Source§

fn merge<S>(self, other: S) -> Merge<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

👎Deprecated: functionality provided by select now
An adapter for merging the output of two streams. Read more
Source§

fn zip<S>(self, other: S) -> Zip<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

An adapter for zipping two streams together. Read more
Source§

fn chain<S>(self, other: S) -> Chain<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Adapter for chaining two stream. Read more
Source§

fn peekable(self) -> Peekable<Self>
where Self: Sized,

Creates a new stream which exposes a peek method. Read more
Source§

fn chunks(self, capacity: usize) -> Chunks<Self>
where Self: Sized,

An adaptor for chunking up items of the stream inside a vector. Read more
Source§

fn select<S>(self, other: S) -> Select<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Creates a stream that selects the next element from either this stream or the provided one, whichever is ready first. Read more
Source§

fn forward<S>(self, sink: S) -> Forward<Self, S>
where S: Sink<SinkItem = Self::Item>, Self::Error: From<<S as Sink>::SinkError>, Self: Sized,

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnMut(&Self::Item), Self: Sized,

Do something with each item of this stream, afterwards passing it on. Read more
Source§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where F: FnMut(&Self::Error), Self: Sized,

Do something with the error of this stream, afterwards passing it on. Read more

Auto Trait Implementations§

§

impl<T, C> Freeze for Until<T, C>
where T: Freeze, C: Freeze,

§

impl<T, C> RefUnwindSafe for Until<T, C>

§

impl<T, C> Send for Until<T, C>
where T: Send, C: Send,

§

impl<T, C> Sync for Until<T, C>
where T: Sync, C: Sync,

§

impl<T, C> Unpin for Until<T, C>
where T: Unpin, C: Unpin,

§

impl<T, C> UnwindSafe for Until<T, C>
where T: UnwindSafe, C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T
where T: Future,

Source§

fn into_boxed(self) -> BoxFuture<Self::Item, Self::Error>
where Self: 'static,

Wraps a future into a boxed future, making type-checking easier at the expense of an extra layer of indirection at runtime.
Source§

fn into_send_boxed(self) -> BoxSendFuture<Self::Item, Self::Error>
where Self: Send + 'static,

Source§

fn until<C>(self, condition: C) -> Until<Self, C>
where 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. Read more
Source§

fn infallible<E>(self) -> Infallible<Self, E>
where Self: Future<Error = Void>,

For futures which can’t fail (ie. which have error type Void), cast the error type to some inferred type.
Source§

fn log_error(self, level: LogLevel, description: &'static str) -> LogError<Self>
where 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 ().
Source§

fn finally<D>(self, on_drop: D) -> Finally<Self, D>
where 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.
Source§

fn with_timeout(self, duration: Duration) -> WithTimeout<Self>

Runs the future for the given duration, returning its value in an option, or returning None if the timeout expires.
Source§

fn with_timeout_at(self, instant: Instant) -> WithTimeout<Self>

Runs the future until the given instant, returning its value in an option, or returning None if the timeout expires.
Source§

fn first_ok2<F>(self, other: F) -> FirstOk2<Self, F>
where 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.
Source§

fn while_driving<F: Future>(self, other: F) -> WhileDriving<Self, F>

Resolves self while driving other in parallel.
Source§

fn resume_unwind(self) -> ResumeUnwind<Self>
where Self: Future<Error = Box<dyn Any + Send + 'static>>,

Propogates the result of a .catch_unwind, panicking if the future resolves to an Err
Source§

impl<T> FutureExt for T
where T: Future + ?Sized,

Source§

fn timeout(self, timeout: Duration) -> Timeout<Self>
where Self: Sized,

Creates a new future which allows self until timeout. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<F> IntoFuture for F
where F: Future,

Source§

type Future = F

The future that this type can be converted into.
Source§

type Item = <F as Future>::Item

The item that the future may resolve with.
Source§

type Error = <F as Future>::Error

The error that the future may resolve with.
Source§

fn into_future(self) -> F

Consumes this object and produces a future.
Source§

impl<T> StreamExt for T
where T: Stream,

Source§

fn into_boxed(self) -> BoxStream<Self::Item, Self::Error>
where Self: 'static,

Wraps a stream into a boxed stream, making type-checking easier at the expense of an extra layer of indirection at runtime.
Source§

fn into_send_boxed(self) -> BoxSendStream<Self::Item, Self::Error>
where Self: Send + 'static,

Source§

fn until<C>(self, condition: C) -> Until<Self, C>
where C: Future<Item = ()>, Self::Error: From<C::Error>,

Run this stream until some condition is met. condition is a future which returns (), after which this stream will be finished. Read more
Source§

fn first_ok(self) -> FirstOk<Self>

Adapts a stream to a future by taking the first successful item yielded by the stream. If the stream ends before yielding an Ok then all the errors that were yielded by the stream are returned in a vector.
Source§

fn log_errors( self, level: LogLevel, description: &'static str, ) -> LogErrors<Self>
where Self::Error: Display,

Removes the errors from this stream and log them. description is prepended to the log messages. The returned stream has error type Void since the errors have been removed.
Source§

fn infallible<E>(self) -> Infallible<Self, E>
where Self: Stream<Error = Void>,

For streams which can’t fail (ie. which have error type Void), cast the error type to some inferred type.
Source§

fn next_or_else<F, E>(self, f: F) -> NextOrElse<Self, F>
where F: FnOnce() -> E, E: From<Self::Error>,

Returns a future which returns the next item from the stream, along with the stream itself. If the stream errors then just the error is returned. If the stream ends then the provided closure is used to produce an error value.
Source§

fn finally<D>(self, on_drop: D) -> Finally<Self, D>
where D: FnOnce(),

Yields items from the stream and runs the provided callback when the stream finishes. The callback will also be run if the entire stream is dropped.
Source§

fn with_timeout(self, duration: Duration) -> WithTimeout<Self>

Runs the stream for the given duration.
Source§

fn with_timeout_at(self, instant: Instant) -> WithTimeout<Self>

Runs the stream until the given timeout.
Source§

fn with_readiness_timeout( self, duration: Duration, ) -> WithReadinessTimeout<Self>

Source§

impl<T> StreamExt for T
where T: Stream + ?Sized,

Source§

fn throttle(self, duration: Duration) -> Throttle<Self>
where Self: Sized,

Throttle down the stream by enforcing a fixed delay between items. Read more
Source§

fn enumerate(self) -> Enumerate<Self>
where Self: Sized,

Creates a new stream which gives the current iteration count as well as the next value. Read more
Source§

fn timeout(self, timeout: Duration) -> Timeout<Self>
where Self: Sized,

Creates a new stream which allows self until timeout. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.