pub unsafe trait UnsafeFutureObj<'a, T>: 'a {
// Required methods
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§
sourcefn into_raw(self) -> *mut dyn Future<Output = T> + 'a
fn into_raw(self) -> *mut dyn Future<Output = T> + 'a
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.
sourceunsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a)
unsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a)
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_rawinvocation 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