Enum Val
pub enum Val {
I32(i32),
I64(i64),
F32(u32),
F64(u64),
V128(V128),
FuncRef(Option<Func>),
ExternRef(Option<Rooted<ExternRef>>),
AnyRef(Option<Rooted<AnyRef>>),
}Expand description
Possible runtime values that a WebAssembly module can either consume or produce.
Note that we inline the enum Ref { ... } variants into enum Val { ... }
here as a size optimization.
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(V128)
A 128-bit number.
FuncRef(Option<Func>)
A function reference.
ExternRef(Option<Rooted<ExternRef>>)
An external reference.
AnyRef(Option<Rooted<AnyRef>>)
An internal reference.
Implementations§
§impl Val
impl Val
pub const fn null_func_ref() -> Val
pub const fn null_func_ref() -> Val
Returns the null function reference value.
The return value has type (ref null nofunc) aka nullfuncref and is a
subtype of all function references.
pub const fn null_extern_ref() -> Val
pub const fn null_extern_ref() -> Val
Returns the null function reference value.
The return value has type (ref null extern) aka nullexternref and is
a subtype of all external references.
pub const fn null_any_ref() -> Val
pub const fn null_any_ref() -> Val
Returns the null function reference value.
The return value has type (ref null any) aka nullref and is a
subtype of all internal references.
pub fn default_for_ty(ty: &ValType) -> Option<Val>
pub fn default_for_ty(ty: &ValType) -> Option<Val>
Returns the default value for the given type, if any exists.
Returns None if there is no default value for the given type (for
example, non-nullable reference types do not have a default value).
pub fn matches_ty(
&self,
store: impl AsContext,
ty: &ValType,
) -> Result<bool, Error>
pub fn matches_ty( &self, store: impl AsContext, ty: &ValType, ) -> Result<bool, Error>
Does this value match the given type?
Returns an error is an underlying Rooted has been unrooted.
§Panics
Panics if this value is not associated with the given store.
pub unsafe fn to_raw(&self, store: impl AsContextMut) -> Result<ValRaw, Error>
pub unsafe fn to_raw(&self, store: impl AsContextMut) -> Result<ValRaw, Error>
Convenience method to convert this Val into a ValRaw.
Returns an error if this value is a GC reference and the GC reference has been unrooted.
§Unsafety
This method is unsafe for the reasons that ExternRef::to_raw and
Func::to_raw are unsafe.
pub 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. Additionally there’s no guarantee
otherwise that raw should have the type ty specified.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub fn func_ref(&self) -> Option<Option<&Func>>
pub fn func_ref(&self) -> Option<Option<&Func>>
Attempt to access the underlying value of this Val, returning
None if it is not the correct type.
pub fn unwrap_func_ref(&self) -> Option<&Func>
pub fn unwrap_func_ref(&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.
pub fn extern_ref(&self) -> Option<Option<&Rooted<ExternRef>>>
pub fn extern_ref(&self) -> Option<Option<&Rooted<ExternRef>>>
Attempt to access the underlying value of this Val, returning
None if it is not the correct type.
pub fn unwrap_extern_ref(&self) -> Option<&Rooted<ExternRef>>
pub fn unwrap_extern_ref(&self) -> Option<&Rooted<ExternRef>>
Returns the underlying value of this Val, panicking if it’s the
wrong type.
§Panics
Panics if self is not of the right type.
pub fn any_ref(&self) -> Option<Option<&Rooted<AnyRef>>>
pub fn any_ref(&self) -> Option<Option<&Rooted<AnyRef>>>
Attempt to access the underlying value of this Val, returning
None if it is not the correct type.
pub fn unwrap_any_ref(&self) -> Option<&Rooted<AnyRef>>
pub fn unwrap_any_ref(&self) -> Option<&Rooted<AnyRef>>
Returns the underlying value of this Val, panicking if it’s the
wrong type.
§Panics
Panics if self is not of the right type.
pub fn v128(&self) -> Option<V128>
pub fn v128(&self) -> Option<V128>
Attempt to access the underlying value of this Val, returning
None if it is not the correct type.
pub fn unwrap_v128(&self) -> V128
pub fn unwrap_v128(&self) -> V128
Returns the underlying value of this Val, panicking if it’s the
wrong type.
§Panics
Panics if self is not of the right type.
pub fn externref(&self) -> Option<Option<&Rooted<ExternRef>>>
pub fn externref(&self) -> Option<Option<&Rooted<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.
pub fn unwrap_externref(&self) -> Option<&Rooted<ExternRef>>
pub fn unwrap_externref(&self) -> Option<&Rooted<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.
pub fn anyref(&self) -> Option<Option<&Rooted<AnyRef>>>
pub fn anyref(&self) -> Option<Option<&Rooted<AnyRef>>>
Attempt to access the underlying anyref value of this Val.
If this is not an anyref, then None is returned.
If this is a null anyref, then Some(None) is returned.
If this is a non-null anyref, then Some(Some(..)) is returned.
pub fn unwrap_anyref(&self) -> Option<&Rooted<AnyRef>>
pub fn unwrap_anyref(&self) -> Option<&Rooted<AnyRef>>
Returns the underlying anyref value of this Val, panicking if it’s the
wrong type.
If this is a null anyref, then None is returned.
If this is a non-null anyref, then Some(..) is returned.
§Panics
Panics if self is not a (nullable) anyref.
pub fn funcref(&self) -> Option<Option<&Func>>
pub fn funcref(&self) -> Option<Option<&Func>>
Attempt to access the underlying funcref value of this Val.
If this is not an funcref, then None is returned.
If this is a null funcref, then Some(None) is returned.
If this is a non-null funcref, then Some(Some(..)) is returned.
pub fn unwrap_funcref(&self) -> Option<&Func>
pub fn unwrap_funcref(&self) -> Option<&Func>
Returns the underlying funcref value of this Val, panicking if it’s the
wrong type.
If this is a null funcref, then None is returned.
If this is a non-null funcref, then Some(..) is returned.
§Panics
Panics if self is not a (nullable) funcref.
Trait Implementations§
impl Copy for Val
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§
§impl<T> AnySync for T
impl<T> AnySync for T
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> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
Source§impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
Source§fn defensive_truncate_into(self) -> U
fn defensive_truncate_into(self) -> U
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
Source§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
Source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.