Trait sp_runtime_interface::RIType

source ·
pub trait RIType {
    type FFIType: IntoValue + TryFromValue + WasmTy;
}
Expand description

Something that can be used by the runtime interface as type to communicate between wasm and the host.

Every type that should be used in a runtime interface function signature needs to implement this trait.

Required Associated Types§

source

type FFIType: IntoValue + TryFromValue + WasmTy

The ffi type that is used to represent Self.

Implementations on Foreign Types§

source§

impl RIType for bool

bool is passed as u32.

  • 1: true
  • 0: false
§

type FFIType = u32

source§

impl RIType for i8

The type is passed directly.

§

type FFIType = i32

source§

impl RIType for i16

The type is passed directly.

§

type FFIType = i32

source§

impl RIType for i32

The type is passed directly.

§

type FFIType = i32

source§

impl RIType for i64

The type is passed directly.

§

type FFIType = i64

source§

impl RIType for i128

u128/i128 is passed as u32.

The u32 is a pointer to an [u8; 16] array.

§

type FFIType = u32

source§

impl RIType for str

The type is passed as u64.

The u64 value is build by length 32bit << 32 | pointer 32bit

The length and the pointer are taken directly from Self.

§

type FFIType = u64

source§

impl RIType for u8

The type is passed directly.

§

type FFIType = u32

source§

impl RIType for u16

The type is passed directly.

§

type FFIType = u32

source§

impl RIType for u32

The type is passed directly.

§

type FFIType = u32

source§

impl RIType for u64

The type is passed directly.

§

type FFIType = u64

source§

impl RIType for u128

u128/i128 is passed as u32.

The u32 is a pointer to an [u8; 16] array.

§

type FFIType = u32

source§

impl<T> RIType for [T]

The type is passed as u64.

The u64 value is build by length 32bit << 32 | pointer 32bit

If T == u8 the length and the pointer are taken directly from Self. Otherwise Self is encoded and the length and the pointer are taken from the encoded vector.

§

type FFIType = u64

source§

impl<T> RIType for Vec<T>

The type is passed as u64.

The u64 value is build by length 32bit << 32 | pointer 32bit

If T == u8 the length and the pointer are taken directly from Self. Otherwise Self is encoded and the length and the pointer are taken from the encoded vector.

§

type FFIType = u64

source§

impl<const N: usize> RIType for [u8; N]

The type is passed as u32.

The u32 is the pointer to the array.

§

type FFIType = u32

Implementors§

source§

impl<T: Copy + Into<u8> + TryFrom<u8>> RIType for Enum<T>

The type is passed as u32.

The value is corresponds to the discriminant of the variant.

§

type FFIType = u32

source§

impl<T: Codec> RIType for Codec<T>

The type is passed as u64.

The u64 value is build by length 32bit << 32 | pointer 32bit

Self is encoded and the length and the pointer are taken from the encoded vector.

§

type FFIType = u64

source§

impl<T: PointerType> RIType for Pointer<T>

§

type FFIType = u32

source§

impl<T: PassBy> RIType for T

§

type FFIType = <<T as PassBy>::PassBy as RIType>::FFIType

source§

impl<T: PassByInner<Inner = I>, I: RIType> RIType for Inner<T, I>

The type is passed as the inner type.

§

type FFIType = <I as RIType>::FFIType