[−][src]Struct futures::future::FutureObj
pub struct FutureObj<'a, T>(_);
🔬 This is a nightly-only experimental API. (futures_api
)
futures in libcore are unstable
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 andBox<dyn Trait>
is not available in no_std contexts. - The
Future
trait is currently not object safe: TheFuture::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 arbitray self types for more information #44874)
Methods
impl<'a, T> FutureObj<'a, T>
[src]
impl<'a, T> FutureObj<'a, T>
pub fn new<F>(f: F) -> FutureObj<'a, T> where
F: Send + UnsafeFutureObj<'a, T>,
[src]
pub fn new<F>(f: F) -> FutureObj<'a, T> where
F: Send + UnsafeFutureObj<'a, T>,
🔬 This is a nightly-only experimental API. (futures_api
)
futures in libcore are unstable
Create a FutureObj
from a custom trait object representation.
Trait Implementations
impl<'a, T> Unpin for FutureObj<'a, T>
[src]
impl<'a, T> Unpin for FutureObj<'a, T>
impl<'a, T> Future for FutureObj<'a, T>
[src]
impl<'a, T> Future for FutureObj<'a, T>
type Output = T
🔬 This is a nightly-only experimental API. (futures_api
)
futures in libcore are unstable
The result of the Future
.
fn poll(self: PinMut<FutureObj<'a, T>>, cx: &mut Context) -> Poll<T>
[src]
fn poll(self: PinMut<FutureObj<'a, T>>, cx: &mut Context) -> Poll<T>
🔬 This is a nightly-only experimental API. (futures_api
)
futures in libcore are unstable
Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
impl<'a, T> Send for FutureObj<'a, T>
[src]
impl<'a, T> Send for FutureObj<'a, T>
impl<'a, T> From<FutureObj<'a, T>> for LocalFutureObj<'a, T>
[src]
impl<'a, T> From<FutureObj<'a, T>> for LocalFutureObj<'a, T>
fn from(f: FutureObj<'a, T>) -> LocalFutureObj<'a, T>
[src]
fn from(f: FutureObj<'a, T>) -> LocalFutureObj<'a, T>
Performs the conversion.
impl<'a, T> Debug for FutureObj<'a, T>
[src]
impl<'a, T> Debug for FutureObj<'a, T>
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
Formats the value using the given formatter. Read more
impl<'a, F> From<Box<F>> for FutureObj<'a, ()> where
F: 'a + Send + Future<Output = ()>,
[src]
impl<'a, F> From<Box<F>> for FutureObj<'a, ()> where
F: 'a + Send + Future<Output = ()>,
impl<'a, F> From<PinBox<F>> for FutureObj<'a, ()> where
F: 'a + Send + Future<Output = ()>,
[src]
impl<'a, F> From<PinBox<F>> for FutureObj<'a, ()> where
F: 'a + Send + Future<Output = ()>,
Auto Trait Implementations
Blanket Implementations
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
ⓘImportant traits for &'a mut Ifn borrow(&self) -> &T
[src]
fn borrow(&self) -> &T
Immutably borrows from an owned value. Read more
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
ⓘImportant traits for &'a mut Ifn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]
impl<T> FutureExt for T where
T: Future + ?Sized,
fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
[src]
fn map<U, F>(self, f: F) -> Map<Self, F> where
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]
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
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 join<Fut2>(self, other: Fut2) -> Join<Self, Fut2> where
Fut2: Future,
[src]
fn join<Fut2>(self, other: Fut2) -> Join<Self, Fut2> where
Fut2: Future,
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]
fn join3<Fut2, Fut3>(
self,
future2: Fut2,
future3: Fut3
) -> Join3<Self, Fut2, Fut3> where
Fut2: Future,
Fut3: Future,
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]
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,
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]
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,
Same as join
, but with more futures. Read more
fn into_stream(self) -> IntoStream<Self>
[src]
fn into_stream(self) -> IntoStream<Self>
Convert this future into a single element stream. Read more
fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
[src]
fn flatten(self) -> Flatten<Self> where
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]
fn flatten_stream(self) -> FlattenStream<Self> where
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]
fn fuse(self) -> Fuse<Self>
Fuse a future such that poll
will never again be called once it has completed. Read more
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
[src]
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
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]
fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe,
Catches unwinding panics while polling the future. Read more
Create a cloneable handle to this future where all handles will resolve to the same result. Read more
fn boxed(self) -> PinBox<Self>
[src]
fn boxed(self) -> PinBox<Self>
Wrap the future in a Box, pinning it.
fn unit_error(self) -> UnitError<Self>
[src]
fn unit_error(self) -> UnitError<Self>
Turns a Future
into a TryFuture
with Error = ()
.
fn with_spawner<Sp>(self, spawner: Sp) -> WithSpawner<Self, Sp> where
Sp: Spawn,
[src]
fn with_spawner<Sp>(self, spawner: Sp) -> WithSpawner<Self, Sp> where
Sp: Spawn,
Assigns the provided Spawn
to be used when spawning tasks from within the future. Read more
fn poll_unpin(&mut self, cx: &mut Context) -> Poll<Self::Output> where
Self: Unpin,
[src]
fn poll_unpin(&mut self, cx: &mut Context) -> Poll<Self::Output> where
Self: Unpin,
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]
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>>,
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: PinMut<F>, cx: &mut Context) -> Poll<<F as Future>::Output>
[src]
fn try_poll(self: PinMut<F>, cx: &mut Context) -> Poll<<F as Future>::Output>
Poll this TryFuture
as if it were a Future
. Read more
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture,
[src]
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture,
fn flatten_sink(self) -> FlattenSink<Self, Self::Ok> where
Self::Ok: Sink,
<Self::Ok as Sink>::SinkError == Self::Error,
[src]
fn flatten_sink(self) -> FlattenSink<Self, Self::Ok> where
Self::Ok: Sink,
<Self::Ok as Sink>::SinkError == Self::Error,
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]
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
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]
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
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]
fn err_into<E>(self) -> ErrInto<Self, E> where
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]
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
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]
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
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 unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
F: FnOnce(Self::Error) -> Self::Ok,
[src]
fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
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]
fn into_future(self) -> IntoFuture<Self>
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]
fn try_join<Fut2>(self, other: Fut2) -> TryJoin<Self, Fut2> where
Fut2: TryFuture<Error = Self::Error>,
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]
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>,
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]
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>,
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]
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>,
Same as try_join
, but with more futures. Read more