pub trait LongRefFromWasmAbi: WasmDescribe {
type Abi: WasmAbi;
type Anchor: Borrow<Self>;
// Required method
unsafe fn long_ref_from_abi(js: Self::Abi) -> Self::Anchor;
}
Expand description
A version of the RefFromWasmAbi
trait with the additional requirement
that the reference must remain valid as long as the anchor isn’t dropped.
This isn’t the case for JsValue
’s RefFromWasmAbi
implementation. To
avoid having to allocate a spot for the JsValue
on the JsValue
heap,
the JsValue
is instead pushed onto the JsValue
stack, and popped off
again after the function that the reference was passed to returns. So,
JsValue
has a different LongRefFromWasmAbi
implementation that behaves
the same as FromWasmAbi
, putting the value on the heap.
This is needed for async functions, where the reference needs to be valid
for the whole length of the Future
, rather than the initial synchronous
call.
‘long ref’ is short for ‘long-lived reference’.
§⚠️ Unstable
This is part of the internal convert
module, no
stability guarantees are provided. Use at your own risk. See its
documentation for more details.
Required Associated Types§
Required Methods§
sourceunsafe fn long_ref_from_abi(js: Self::Abi) -> Self::Anchor
unsafe fn long_ref_from_abi(js: Self::Abi) -> Self::Anchor
Same as RefFromWasmAbi::ref_from_abi
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.