[][src]Struct futures::future::FutureObj

pub struct FutureObj<'a, T>(_);

A custom trait object for polling futures, roughly akin to Box<dyn Future<Output = T> + Send + 'a>.

This custom trait object was introduced for two reasons:

  • Currently it is not possible to take dyn Trait by value and Box<dyn Trait> is not available in no_std contexts.
  • The Future trait is currently not object safe: The Future::poll method makes uses the arbitrary self types feature and traits in which this feature is used are currently not object safe due to current compiler limitations. (See tracking issue for arbitrary self types for more information #44874)

Methods

impl<'a, T> FutureObj<'a, T>[src]

pub fn new<F>(f: F) -> FutureObj<'a, T> where
    F: UnsafeFutureObj<'a, T> + Send
[src]

Create a FutureObj from a custom trait object representation.

Trait Implementations

impl<'a, T> Unpin for FutureObj<'a, T>[src]

impl<'a, T> From<FutureObj<'a, T>> for LocalFutureObj<'a, T>[src]

impl<'a, F> From<Box<F>> for FutureObj<'a, ()> where
    F: 'a + Send + Future<Output = ()>, 
[src]

impl<'a, F> From<Pin<Box<F>>> for FutureObj<'a, ()> where
    F: 'a + Send + Future<Output = ()>, 
[src]

impl<'a, T> Future for FutureObj<'a, T>[src]

type Output = T

🔬 This is a nightly-only experimental API. (futures_api)

futures in libcore are unstable

The type of value produced on completion.

impl<'a, T> Debug for FutureObj<'a, T>[src]

impl<'a, T> Send for FutureObj<'a, T>[src]

Auto Trait Implementations

impl<'a, T> !Sync for FutureObj<'a, T>

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> FutureExt for T where
    T: Future + ?Sized
[src]

fn map<U, F>(self, f: F) -> Map<Self, F> where
    F: FnOnce(Self::Output) -> U, 
[src]

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]

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

fn join<Fut2>(self, other: Fut2) -> Join<Self, Fut2> where
    Fut2: Future
[src]

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

fn join3<Fut2, Fut3>(
    self,
    future2: Fut2,
    future3: Fut3
) -> Join3<Self, Fut2, Fut3> where
    Fut2: Future,
    Fut3: Future
[src]

Same as join, but with more futures. Read more

fn join4<Fut2, Fut3, Fut4>(
    self,
    future2: Fut2,
    future3: Fut3,
    future4: Fut4
) -> Join4<Self, Fut2, Fut3, Fut4> where
    Fut2: Future,
    Fut3: Future + Future,
    Fut4: Future
[src]

Same as join, but with more futures. Read more

fn join5<Fut2, Fut3, Fut4, Fut5>(
    self,
    future2: Fut2,
    future3: Fut3,
    future4: Fut4,
    future5: Fut5
) -> Join5<Self, Fut2, Fut3, Fut4, Fut5> where
    Fut2: Future,
    Fut3: Future + Future,
    Fut4: Future,
    Fut5: Future
[src]

Same as join, but with more futures. 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]

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]

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]

Do something with the output of a future before passing it on. Read more

fn catch_unwind(self) -> CatchUnwind<Self> where
    Self: UnwindSafe
[src]

Catches unwinding panics while polling the future. Read more

fn shared(self) -> Shared<Self> where
    Self::Output: Clone
[src]

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

fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)[src]

Turn this future into a future that yields () on completion and sends its output to another future on a separate task. Read more

fn boxed(self) -> Pin<Box<Self>>[src]

Wrap the future in a Box, pinning it.

fn unit_error(self) -> UnitError<Self>[src]

Turns a Future into a TryFuture with Error = ().

fn poll_unpin(&mut self, waker: &Waker) -> Poll<Self::Output> where
    Self: Unpin
[src]

A convenience for calling Future::poll on Unpin future types.

impl<F, T, E> TryFuture for F where
    F: Future<Output = Result<T, E>>, 
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<Fut> TryFutureExt for Fut where
    Fut: TryFuture
[src]

fn flatten_sink(self) -> FlattenSink<Self, Self::Ok> where
    Self::Ok: Sink,
    <Self::Ok as Sink>::SinkError == Self::Error
[src]

Flattens the execution of this future when the successful result of this future is a [Sink]. Read more

fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
    F: FnOnce(Self::Ok) -> T, 
[src]

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]

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]

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]

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]

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 unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
    F: FnOnce(Self::Error) -> Self::Ok
[src]

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_join<Fut2>(self, other: Fut2) -> TryJoin<Self, Fut2> where
    Fut2: TryFuture<Error = Self::Error>, 
[src]

Joins the result of two futures, waiting for them both to complete or for one to produce an error. Read more

fn try_join3<Fut2, Fut3>(
    self,
    future2: Fut2,
    future3: Fut3
) -> TryJoin3<Self, Fut2, Fut3> where
    Fut2: TryFuture<Error = Self::Error>,
    Fut3: TryFuture<Error = Self::Error>, 
[src]

Same as try_join, but with more futures. Read more

fn try_join4<Fut2, Fut3, Fut4>(
    self,
    future2: Fut2,
    future3: Fut3,
    future4: Fut4
) -> TryJoin4<Self, Fut2, Fut3, Fut4> where
    Fut2: TryFuture<Error = Self::Error>,
    Fut3: TryFuture<Error = Self::Error>,
    Fut4: TryFuture<Error = Self::Error>, 
[src]

Same as try_join, but with more futures. Read more

fn try_join5<Fut2, Fut3, Fut4, Fut5>(
    self,
    future2: Fut2,
    future3: Fut3,
    future4: Fut4,
    future5: Fut5
) -> TryJoin5<Self, Fut2, Fut3, Fut4, Fut5> where
    Fut2: TryFuture<Error = Self::Error>,
    Fut3: TryFuture<Error = Self::Error>,
    Fut4: TryFuture<Error = Self::Error>,
    Fut5: TryFuture<Error = Self::Error>, 
[src]

Same as try_join, but with more futures. Read more