Trait futures::future::UnsafeFutureObj[][src]

pub unsafe trait UnsafeFutureObj<'a, T>: 'a {
    fn into_raw(self) -> *mut ();
unsafe fn poll(ptr: *mut (), cx: &mut Context) -> Poll<T>;
unsafe fn drop(ptr: *mut ()); }
🔬 This is a nightly-only experimental API. (futures_api)

futures in libcore are unstable

A custom implementation of a future trait object for FutureObj, providing a hand-rolled vtable.

This custom representation is typically used only in no_std contexts, where the default Box-based implementation is not available.

The implementor must guarantee that it is safe to call poll repeatedly (in a non-concurrent fashion) with the result of into_raw until drop is called.

Required Methods

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

futures in libcore are unstable

Convert an owned instance into a (conceptually owned) void pointer.

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

futures in libcore are unstable

Poll the future represented by the given void pointer.

Safety

The trait implementor must guarantee that it is safe to repeatedly call poll with the result of into_raw until drop is called; such calls are not, however, allowed to race with each other or with calls to drop.

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

futures in libcore are unstable

Drops the future represented by the given void pointer.

Safety

The trait implementor must guarantee that it is safe to call this function once per into_raw invocation; that call cannot race with other calls to drop or poll.

Implementations on Foreign Types

impl<'a, T, F> UnsafeFutureObj<'a, T> for &'a mut F where
    F: Future<Output = T> + Unpin + 'a, 
[src]

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

futures in libcore are unstable

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

futures in libcore are unstable

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

futures in libcore are unstable

impl<'a, T, F> UnsafeFutureObj<'a, T> for PinMut<'a, F> where
    F: Future<Output = T> + 'a, 
[src]

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

futures in libcore are unstable

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

futures in libcore are unstable

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

futures in libcore are unstable

impl<'a, T, F> UnsafeFutureObj<'a, T> for PinBox<F> where
    F: Future<Output = T> + 'a, 
[src]

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

futures in libcore are unstable

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

futures in libcore are unstable

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

futures in libcore are unstable

impl<'a, T, F> UnsafeFutureObj<'a, T> for Box<F> where
    F: Future<Output = T> + 'a, 
[src]

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

futures in libcore are unstable

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

futures in libcore are unstable

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

futures in libcore are unstable

Implementors