pub trait WasmAbi {
type Prim1: WasmPrimitive;
type Prim2: WasmPrimitive;
type Prim3: WasmPrimitive;
type Prim4: WasmPrimitive;
// Required methods
fn split(self) -> (Self::Prim1, Self::Prim2, Self::Prim3, Self::Prim4);
fn join(
prim1: Self::Prim1,
prim2: Self::Prim2,
prim3: Self::Prim3,
prim4: Self::Prim4,
) -> Self;
}Expand description
A trait which represents types that can be passed across the Wasm ABI boundary, by being split into multiple Wasm primitive types.
Up to 4 primitives are supported; if you don’t want to use all of them, you
can set the rest to (), which will cause them to be ignored.
You need to be careful how many primitives you use, however:
Result<T, JsValue> uses up 2 primitives to store the error, and so it
doesn’t work if T uses more than 2 primitives.
So, if you’re adding support for a type that needs 3 or more primitives and is able to be returned, you have to add another primitive here.
There’s already one type that uses 3 primitives: &mut [T]. However, it
can’t be returned anyway, so it doesn’t matter that
Result<&mut [T], JsValue> wouldn’t work.
§⚠️ 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§
type Prim1: WasmPrimitive
type Prim2: WasmPrimitive
type Prim3: WasmPrimitive
type Prim4: WasmPrimitive
Required Methods§
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.