Trait futures_util::task::UnsafeFutureObj
source · [−]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