pub enum ValType {
I32,
I64,
F32,
F64,
V128,
Ref(RefType),
}Expand description
A list of all possible value types in WebAssembly.
§Subtyping and Equality
ValType does not implement Eq, because reference types have a subtyping
relationship, and so 99.99% of the time you actually want to check whether
one type matches (i.e. is a subtype of) another type. You can use the
ValType::matches and Val::matches_ty methods
to perform these types of checks. If, however, you are in that 0.01%
scenario where you need to check precise equality between types, you can use
the ValType::eq method.
Variants§
I32
Signed 32 bit integer.
I64
Signed 64 bit integer.
F32
Floating point 32 bit integer.
F64
Floating point 64 bit integer.
V128
A 128 bit number.
Ref(RefType)
An opaque reference to some type on the heap.
Implementations§
Source§impl ValType
impl ValType
Sourcepub const EXTERNREF: Self
Available on crate feature runtime only.
pub const EXTERNREF: Self
runtime only.The externref type, aka (ref null extern).
Sourcepub const FUNCREF: Self
Available on crate feature runtime only.
pub const FUNCREF: Self
runtime only.The funcref type, aka (ref null func).
Sourcepub const NULLFUNCREF: Self
Available on crate feature runtime only.
pub const NULLFUNCREF: Self
runtime only.The nullfuncref type, aka (ref null nofunc).
Sourcepub const ANYREF: Self
Available on crate feature runtime only.
pub const ANYREF: Self
runtime only.The anyref type, aka (ref null any).
Sourcepub const I31REF: Self
Available on crate feature runtime only.
pub const I31REF: Self
runtime only.The i31ref type, aka (ref null i31).
Sourcepub const NULLREF: Self
Available on crate feature runtime only.
pub const NULLREF: Self
runtime only.The nullref type, aka (ref null none).
Sourcepub fn is_num(&self) -> bool
Available on crate feature runtime only.
pub fn is_num(&self) -> bool
runtime only.Returns true if ValType matches any of the numeric types. (e.g. I32,
I64, F32, F64).
Sourcepub fn is_ref(&self) -> bool
Available on crate feature runtime only.
pub fn is_ref(&self) -> bool
runtime only.Returns true if ValType is any kind of reference type.
Sourcepub fn is_funcref(&self) -> bool
Available on crate feature runtime only.
pub fn is_funcref(&self) -> bool
runtime only.Is this the funcref (aka (ref null func)) type?
Sourcepub fn is_externref(&self) -> bool
Available on crate feature runtime only.
pub fn is_externref(&self) -> bool
runtime only.Is this the externref (aka (ref null extern)) type?
Sourcepub fn is_anyref(&self) -> bool
Available on crate feature runtime only.
pub fn is_anyref(&self) -> bool
runtime only.Is this the anyref (aka (ref null any)) type?
Sourcepub fn as_ref(&self) -> Option<&RefType>
Available on crate feature runtime only.
pub fn as_ref(&self) -> Option<&RefType>
runtime only.Get the underlying reference type, if this value type is a reference type.
Sourcepub fn unwrap_ref(&self) -> &RefType
Available on crate feature runtime only.
pub fn unwrap_ref(&self) -> &RefType
runtime only.Get the underlying reference type, panicking if this value type is not a reference type.
Sourcepub fn matches(&self, other: &ValType) -> bool
Available on crate feature runtime only.
pub fn matches(&self, other: &ValType) -> bool
runtime only.Does this value type match the other type?
That is, is this value type a subtype of the other?
§Panics
Panics if either type is associated with a different engine from the other.
Sourcepub fn eq(a: &Self, b: &Self) -> bool
Available on crate feature runtime only.
pub fn eq(a: &Self, b: &Self) -> bool
runtime only.Is value type a precisely equal to value type b?
Returns false even if a is a subtype of b or vice versa, if they
are not exactly the same value type.
§Panics
Panics if either type is associated with a different engine.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ValType
impl !RefUnwindSafe for ValType
impl Send for ValType
impl Sync for ValType
impl Unpin for ValType
impl !UnwindSafe for ValType
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§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