[−][src]Struct futures::future::LocalFutureObj
A custom trait object for polling futures, roughly akin to
Box<dyn Future<Output = T> + '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 arbitrary self types for more information #44874)
Methods
impl<'a, T> LocalFutureObj<'a, T>
[src]
impl<'a, T> LocalFutureObj<'a, T>
pub fn new<F>(f: F) -> LocalFutureObj<'a, T> where
F: 'a + UnsafeFutureObj<'a, T>,
[src]
pub fn new<F>(f: F) -> LocalFutureObj<'a, T> where
F: 'a + UnsafeFutureObj<'a, T>,
Create a LocalFutureObj
from a custom trait object representation.
pub unsafe fn into_future_obj(self) -> FutureObj<'a, T>
[src]
pub unsafe fn into_future_obj(self) -> FutureObj<'a, T>
Converts the LocalFutureObj
into a FutureObj
To make this operation safe one has to ensure that the UnsafeFutureObj
instance from which this LocalFutureObj
was created actually
implements Send
.
Trait Implementations
impl<'a, T> Unpin for LocalFutureObj<'a, T>
[src]
impl<'a, T> Unpin for LocalFutureObj<'a, T>
impl<'a, T> Drop for LocalFutureObj<'a, T>
[src]
impl<'a, T> Drop for LocalFutureObj<'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, F> From<Pin<Box<F>>> for LocalFutureObj<'a, ()> where
F: 'a + Future<Output = ()>,
[src]
impl<'a, F> From<Pin<Box<F>>> for LocalFutureObj<'a, ()> where
F: 'a + Future<Output = ()>,
impl<'a, F> From<Box<F>> for LocalFutureObj<'a, ()> where
F: 'a + Future<Output = ()>,
[src]
impl<'a, F> From<Box<F>> for LocalFutureObj<'a, ()> where
F: 'a + Future<Output = ()>,
fn from(boxed: Box<F>) -> LocalFutureObj<'a, ()>
[src]
fn from(boxed: Box<F>) -> LocalFutureObj<'a, ()>
Performs the conversion.
impl<'a, T> Future for LocalFutureObj<'a, T>
[src]
impl<'a, T> Future for LocalFutureObj<'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: Pin<&mut LocalFutureObj<'a, T>>, lw: &LocalWaker) -> Poll<T>
[src]
fn poll(self: Pin<&mut LocalFutureObj<'a, T>>, lw: &LocalWaker) -> 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> Debug for LocalFutureObj<'a, T>
[src]
impl<'a, T> Debug for LocalFutureObj<'a, T>
Auto Trait Implementations
impl<'a, T> !Send for LocalFutureObj<'a, T>
impl<'a, T> !Send for LocalFutureObj<'a, T>
impl<'a, T> !Sync for LocalFutureObj<'a, T>
impl<'a, T> !Sync for LocalFutureObj<'a, T>
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
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> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
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> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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> 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 remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)
[src]
fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)
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]
fn boxed(self) -> Pin<Box<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 poll_unpin(&mut self, lw: &LocalWaker) -> Poll<Self::Output> where
Self: Unpin,
[src]
fn poll_unpin(&mut self, lw: &LocalWaker) -> 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: Pin<&mut F>, lw: &LocalWaker) -> Poll<<F as Future>::Output>
[src]
fn try_poll(self: Pin<&mut F>, lw: &LocalWaker) -> 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
ⓘImportant traits for Compat<R>fn compat(self) -> Compat<Self> where
Self: Unpin,
[src]
fn compat(self) -> Compat<Self> where
Self: Unpin,
Wraps a [TryFuture
] into a future compatable with libraries using futures 0.1 future definitons. Requires the compat
feature to enable. 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