Struct FirstOk

Source
pub struct FirstOk<S>
where S: Stream,
{ /* private fields */ }
Expand description

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.

Implementations§

Source§

impl<S> FirstOk<S>
where S: Stream,

Source

pub fn new(stream: S) -> FirstOk<S>

Trait Implementations§

Source§

impl<S> Future for FirstOk<S>
where S: Stream,

Source§

type Item = <S as Stream>::Item

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

type Error = Vec<<S as Stream>::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<S::Item>, Vec<S::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

Auto Trait Implementations§

§

impl<S> Freeze for FirstOk<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for FirstOk<S>

§

impl<S> Send for FirstOk<S>
where S: Send, <S as Stream>::Error: Send,

§

impl<S> Sync for FirstOk<S>
where S: Sync, <S as Stream>::Error: Sync,

§

impl<S> Unpin for FirstOk<S>
where S: Unpin, <S as Stream>::Error: Unpin,

§

impl<S> UnwindSafe for FirstOk<S>
where S: UnwindSafe, <S as Stream>::Error: 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, 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.