pub enum Val {
I32(i32),
I64(i64),
F32(u32),
F64(u64),
V128(u128),
FuncRef(Option<Func>),
ExternRef(Option<ExternRef>),
}
Expand description
Possible runtime values that a WebAssembly module can either consume or produce.
Variants§
I32(i32)
A 32-bit integer
I64(i64)
A 64-bit integer
F32(u32)
A 32-bit float.
Note that the raw bits of the float are stored here, and you can use
f32::from_bits
to create an f32
value.
F64(u64)
A 64-bit float.
Note that the raw bits of the float are stored here, and you can use
f64::from_bits
to create an f64
value.
V128(u128)
A 128-bit number
FuncRef(Option<Func>)
A first-class reference to a WebAssembly function.
FuncRef(None)
is the null function reference, created by ref.null func
in Wasm.
ExternRef(Option<ExternRef>)
An externref
value which can hold opaque data to the Wasm instance
itself.
ExternRef(None)
is the null external reference, created by ref.null extern
in Wasm.
Implementations§
source§impl Val
impl Val
sourcepub unsafe fn to_raw(&self, store: impl AsContextMut) -> ValRaw
pub unsafe fn to_raw(&self, store: impl AsContextMut) -> ValRaw
Convenience method to convert this Val
into a ValRaw
.
§Unsafety
This method is unsafe for the reasons that ExternRef::to_raw
and
Func::to_raw
are unsafe.
sourcepub unsafe fn from_raw(
store: impl AsContextMut,
raw: ValRaw,
ty: ValType,
) -> Val
pub unsafe fn from_raw( store: impl AsContextMut, raw: ValRaw, ty: ValType, ) -> Val
Convenience method to convert a ValRaw
into a Val
.
§Unsafety
This method is unsafe for the reasons that ExternRef::from_raw
and
Func::from_raw
are unsafe. Additionaly there’s no guarantee
otherwise that raw
should have the type ty
specified.
sourcepub fn i32(&self) -> Option<i32>
pub fn i32(&self) -> Option<i32>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_i32(&self) -> i32
pub fn unwrap_i32(&self) -> i32
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn i64(&self) -> Option<i64>
pub fn i64(&self) -> Option<i64>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_i64(&self) -> i64
pub fn unwrap_i64(&self) -> i64
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn f32(&self) -> Option<f32>
pub fn f32(&self) -> Option<f32>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_f32(&self) -> f32
pub fn unwrap_f32(&self) -> f32
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn f64(&self) -> Option<f64>
pub fn f64(&self) -> Option<f64>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_f64(&self) -> f64
pub fn unwrap_f64(&self) -> f64
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn funcref(&self) -> Option<Option<&Func>>
pub fn funcref(&self) -> Option<Option<&Func>>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_funcref(&self) -> Option<&Func>
pub fn unwrap_funcref(&self) -> Option<&Func>
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn v128(&self) -> Option<u128>
pub fn v128(&self) -> Option<u128>
Attempt to access the underlying value of this Val
, returning
None
if it is not the correct type.
sourcepub fn unwrap_v128(&self) -> u128
pub fn unwrap_v128(&self) -> u128
Returns the underlying value of this Val
, panicking if it’s the
wrong type.
§Panics
Panics if self
is not of the right type.
sourcepub fn externref(&self) -> Option<Option<ExternRef>>
pub fn externref(&self) -> Option<Option<ExternRef>>
Attempt to access the underlying externref
value of this Val
.
If this is not an externref
, then None
is returned.
If this is a null externref
, then Some(None)
is returned.
If this is a non-null externref
, then Some(Some(..))
is returned.
sourcepub fn unwrap_externref(&self) -> Option<ExternRef>
pub fn unwrap_externref(&self) -> Option<ExternRef>
Returns the underlying externref
value of this Val
, panicking if it’s the
wrong type.
If this is a null externref
, then None
is returned.
If this is a non-null externref
, then Some(..)
is returned.
§Panics
Panics if self
is not a (nullable) externref
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Val
impl !RefUnwindSafe for Val
impl Send for Val
impl Sync for Val
impl Unpin for Val
impl !UnwindSafe for Val
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more