wasm_wave::wasm

Trait WasmValue

Source
pub trait WasmValue: Clone + Sized {
    type Type: WasmType;

Show 43 methods // Required method fn kind(&self) -> WasmTypeKind; // Provided methods fn make_bool(val: bool) -> Self { ... } fn make_s8(val: i8) -> Self { ... } fn make_s16(val: i16) -> Self { ... } fn make_s32(val: i32) -> Self { ... } fn make_s64(val: i64) -> Self { ... } fn make_u8(val: u8) -> Self { ... } fn make_u16(val: u16) -> Self { ... } fn make_u32(val: u32) -> Self { ... } fn make_u64(val: u64) -> Self { ... } fn make_f32(val: f32) -> Self { ... } fn make_f64(val: f64) -> Self { ... } fn make_char(val: char) -> Self { ... } fn make_string(val: Cow<'_, str>) -> Self { ... } fn make_list( ty: &Self::Type, vals: impl IntoIterator<Item = Self>, ) -> Result<Self, WasmValueError> { ... } fn make_record<'a>( ty: &Self::Type, fields: impl IntoIterator<Item = (&'a str, Self)>, ) -> Result<Self, WasmValueError> { ... } fn make_tuple( ty: &Self::Type, vals: impl IntoIterator<Item = Self>, ) -> Result<Self, WasmValueError> { ... } fn make_variant( ty: &Self::Type, case: &str, val: Option<Self>, ) -> Result<Self, WasmValueError> { ... } fn make_enum(ty: &Self::Type, case: &str) -> Result<Self, WasmValueError> { ... } fn make_option( ty: &Self::Type, val: Option<Self>, ) -> Result<Self, WasmValueError> { ... } fn make_result( ty: &Self::Type, val: Result<Option<Self>, Option<Self>>, ) -> Result<Self, WasmValueError> { ... } fn make_flags<'a>( ty: &Self::Type, names: impl IntoIterator<Item = &'a str>, ) -> Result<Self, WasmValueError> { ... } fn unwrap_bool(&self) -> bool { ... } fn unwrap_s8(&self) -> i8 { ... } fn unwrap_s16(&self) -> i16 { ... } fn unwrap_s32(&self) -> i32 { ... } fn unwrap_s64(&self) -> i64 { ... } fn unwrap_u8(&self) -> u8 { ... } fn unwrap_u16(&self) -> u16 { ... } fn unwrap_u32(&self) -> u32 { ... } fn unwrap_u64(&self) -> u64 { ... } fn unwrap_f32(&self) -> f32 { ... } fn unwrap_f64(&self) -> f64 { ... } fn unwrap_char(&self) -> char { ... } fn unwrap_string(&self) -> Cow<'_, str> { ... } fn unwrap_list(&self) -> Box<dyn Iterator<Item = Cow<'_, Self>> + '_> { ... } fn unwrap_record( &self, ) -> Box<dyn Iterator<Item = (Cow<'_, str>, Cow<'_, Self>)> + '_> { ... } fn unwrap_tuple(&self) -> Box<dyn Iterator<Item = Cow<'_, Self>> + '_> { ... } fn unwrap_variant(&self) -> (Cow<'_, str>, Option<Cow<'_, Self>>) { ... } fn unwrap_enum(&self) -> Cow<'_, str> { ... } fn unwrap_option(&self) -> Option<Cow<'_, Self>> { ... } fn unwrap_result( &self, ) -> Result<Option<Cow<'_, Self>>, Option<Cow<'_, Self>>> { ... } fn unwrap_flags(&self) -> Box<dyn Iterator<Item = Cow<'_, str>> + '_> { ... }
}
Expand description

The WasmValue trait may be implemented to represent values to be (de)serialized with WAVE, notably value::Value. The wasmtime crate provides an impl for [wasmtime::component::Val].

The make_* and unwrap_* methods should be called only for corresponding WasmTypeKinds.

Required Associated Types§

Source

type Type: WasmType

A type representing types of these values.

Required Methods§

Source

fn kind(&self) -> WasmTypeKind

The kind of type of this value.

Provided Methods§

Source

fn make_bool(val: bool) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_s8(val: i8) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_s16(val: i16) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_s32(val: i32) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_s64(val: i64) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_u8(val: u8) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_u16(val: u16) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_u32(val: u32) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_u64(val: u64) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_f32(val: f32) -> Self

Returns a new WasmValue of the given type.

The Rust f32 type has many distinct NaN bitpatterns, however the component-model f32 type only has a single NaN value, so this function does not preserve NaN bitpatterns.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_f64(val: f64) -> Self

Returns a new WasmValue of the given type.

The Rust f64 type has many distinct NaN bitpatterns, however the component-model f64 type only has a single NaN value, so this function does not preserve NaN bitpatterns.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_char(val: char) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_string(val: Cow<'_, str>) -> Self

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_list( ty: &Self::Type, vals: impl IntoIterator<Item = Self>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_record<'a>( ty: &Self::Type, fields: impl IntoIterator<Item = (&'a str, Self)>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

The fields provided by fields are not necessarily sorted; the callee should perform sorting itself if needed.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_tuple( ty: &Self::Type, vals: impl IntoIterator<Item = Self>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_variant( ty: &Self::Type, case: &str, val: Option<Self>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_enum(ty: &Self::Type, case: &str) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_option( ty: &Self::Type, val: Option<Self>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_result( ty: &Self::Type, val: Result<Option<Self>, Option<Self>>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn make_flags<'a>( ty: &Self::Type, names: impl IntoIterator<Item = &'a str>, ) -> Result<Self, WasmValueError>

Returns a new WasmValue of the given type.

The strings provided by names are not necessarily sorted; the callee should perform sorting itself if needed.

§Panics

Panics if the type is not implemented (the trait default).

Source

fn unwrap_bool(&self) -> bool

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_s8(&self) -> i8

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_s16(&self) -> i16

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_s32(&self) -> i32

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_s64(&self) -> i64

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_u8(&self) -> u8

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_u16(&self) -> u16

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_u32(&self) -> u32

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_u64(&self) -> u64

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_f32(&self) -> f32

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

The Rust f32 type has many distinct NaN bitpatterns, however the component-model f64 type only has a single NaN value, so this function does not preserve NaN bitpatterns.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_f64(&self) -> f64

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

The Rust f64 type has many distinct NaN bitpatterns, however the component-model f64 type only has a single NaN value, so this function does not preserve NaN bitpatterns.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_char(&self) -> char

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_string(&self) -> Cow<'_, str>

Returns the underlying value of the WasmValue, panicing if it’s the wrong type.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_list(&self) -> Box<dyn Iterator<Item = Cow<'_, Self>> + '_>

Returns an iterator of the element Vals of the list.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_record( &self, ) -> Box<dyn Iterator<Item = (Cow<'_, str>, Cow<'_, Self>)> + '_>

Returns an iterator of the field names and Vals of the record.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_tuple(&self) -> Box<dyn Iterator<Item = Cow<'_, Self>> + '_>

Returns an iterator of the field Vals of the tuple.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_variant(&self) -> (Cow<'_, str>, Option<Cow<'_, Self>>)

Returns the variant case name and optional payload WasmValue of the variant.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_enum(&self) -> Cow<'_, str>

Returns the case name of the enum.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_option(&self) -> Option<Cow<'_, Self>>

Returns the optional WasmValue.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_result(&self) -> Result<Option<Cow<'_, Self>>, Option<Cow<'_, Self>>>

Returns Ok() or Err() with the optional payload WasmValue.

§Panics

Panics if self is not of the right type.

Source

fn unwrap_flags(&self) -> Box<dyn Iterator<Item = Cow<'_, str>> + '_>

Returns an iterator of the names of the flags WasmValue.

§Panics

Panics if self is not of the right type.

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.

Implementors§