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.