pub unsafe trait UnsafeFutureObj<'a, T>: 'a {
    fn into_raw(self) -> *mut dyn Future<Output = T> + 'a;
    unsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a);
}
Expand description

A custom implementation of a future trait object for FutureObj, providing a vtable with drop support.

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

Safety

See the safety notes on individual methods for what guarantees an implementor must provide.

Required Methods§

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

Safety
Implementor

The trait implementor must guarantee that it is safe to convert the provided *mut (dyn Future<Output = T> + 'a) into a Pin<&mut (dyn Future<Output = T> + 'a)> and call methods on it, non-reentrantly, until UnsafeFutureObj::drop is called with it.

Drops the future represented by the given fat pointer.

Safety
Implementor

The trait implementor must guarantee that it is safe to call this function once per into_raw invocation.

Caller

The caller must ensure:

  • the pointer passed was obtained from an into_raw invocation from this same trait object
  • the pointer is not currently in use as a Pin<&mut (dyn Future<Output = T> + 'a)>
  • the pointer must not be used again after this function is called

Implementations on Foreign Types§

Implementors§