Trait unc_vm_types::NativeWasmType

source ·
pub trait NativeWasmType: Sized {
    type Abi: Copy + Debug;

    const WASM_TYPE: Type;

    // Required methods
    fn to_binary(self) -> i128;
    fn from_binary(binary: i128) -> Self;

    // Provided method
    fn to_value<T: WasmValueType>(self) -> Value<T> { ... }
}
Expand description

NativeWasmType represents a Wasm type that has a direct representation on the host (hence the “native” term).

It uses the Rust Type system to automatically detect the Wasm type associated with a native Rust type.

use unc_vm_types::{NativeWasmType, Type};

let wasm_type = i32::WASM_TYPE;
assert_eq!(wasm_type, Type::I32);

Note: This strategy will be needed later to automatically detect the signature of a Rust function.

Required Associated Types§

source

type Abi: Copy + Debug

The ABI for this type (i32, i64, f32, f64)

Required Associated Constants§

source

const WASM_TYPE: Type

Type for this NativeWasmType.

Required Methods§

source

fn to_binary(self) -> i128

Convert self to i128 binary representation.

source

fn from_binary(binary: i128) -> Self

Convert to self from i128 binary representation.

Provided Methods§

source

fn to_value<T: WasmValueType>(self) -> Value<T>

Convert self to a Value.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl NativeWasmType for f32

source§

const WASM_TYPE: Type = Type::F32

§

type Abi = f32

source§

fn to_binary(self) -> i128

source§

fn from_binary(bits: i128) -> Self

source§

impl NativeWasmType for f64

source§

const WASM_TYPE: Type = Type::F64

§

type Abi = f64

source§

fn to_binary(self) -> i128

source§

fn from_binary(bits: i128) -> Self

source§

impl NativeWasmType for i32

source§

const WASM_TYPE: Type = Type::I32

§

type Abi = i32

source§

fn to_binary(self) -> i128

source§

fn from_binary(bits: i128) -> Self

source§

impl NativeWasmType for i64

source§

const WASM_TYPE: Type = Type::I64

§

type Abi = i64

source§

fn to_binary(self) -> i128

source§

fn from_binary(bits: i128) -> Self

source§

impl NativeWasmType for u128

source§

const WASM_TYPE: Type = Type::V128

§

type Abi = u128

source§

fn to_binary(self) -> i128

source§

fn from_binary(bits: i128) -> Self

Implementors§