pub struct WasmFeatures(/* private fields */);
Expand description
Flags for features that are enabled for validation.
Implementations§
Source§impl WasmFeatures
impl WasmFeatures
Sourcepub const MUTABLE_GLOBAL: WasmFeatures = _
pub const MUTABLE_GLOBAL: WasmFeatures = _
The WebAssembly mutable-global
proposal.
Defaults to true
.
Sourcepub const SATURATING_FLOAT_TO_INT: WasmFeatures = _
pub const SATURATING_FLOAT_TO_INT: WasmFeatures = _
The WebAssembly saturating-float-to-int
proposal.
Defaults to true
.
Sourcepub const SIGN_EXTENSION: WasmFeatures = _
pub const SIGN_EXTENSION: WasmFeatures = _
The WebAssembly sign-extension-ops
proposal.
Defaults to true
.
Sourcepub const REFERENCE_TYPES: WasmFeatures = _
pub const REFERENCE_TYPES: WasmFeatures = _
The WebAssembly reference types proposal.
Defaults to true
.
Sourcepub const MULTI_VALUE: WasmFeatures = _
pub const MULTI_VALUE: WasmFeatures = _
The WebAssembly multi-value proposal.
Defaults to true
.
Sourcepub const BULK_MEMORY: WasmFeatures = _
pub const BULK_MEMORY: WasmFeatures = _
The WebAssembly bulk memory operations proposal.
Defaults to true
.
Sourcepub const SIMD: WasmFeatures = _
pub const SIMD: WasmFeatures = _
The WebAssembly SIMD proposal.
Defaults to true
.
Sourcepub const RELAXED_SIMD: WasmFeatures = _
pub const RELAXED_SIMD: WasmFeatures = _
The WebAssembly Relaxed SIMD proposal.
Defaults to true
.
Sourcepub const THREADS: WasmFeatures = _
pub const THREADS: WasmFeatures = _
The WebAssembly threads proposal.
Defaults to true
.
Sourcepub const SHARED_EVERYTHING_THREADS: WasmFeatures = _
pub const SHARED_EVERYTHING_THREADS: WasmFeatures = _
The WebAssembly shared-everything-threads proposal; includes new
component model built-ins.
Defaults to false
.
Sourcepub const TAIL_CALL: WasmFeatures = _
pub const TAIL_CALL: WasmFeatures = _
The WebAssembly tail-call proposal.
Defaults to true
.
Sourcepub const FLOATS: WasmFeatures = _
pub const FLOATS: WasmFeatures = _
Whether or not floating-point instructions are enabled.
This is enabled by default can be used to disallow floating-point operators and types.
This does not correspond to a WebAssembly proposal but is instead
intended for embeddings which have stricter-than-usual requirements
about execution. Floats in WebAssembly can have different NaN patterns
across hosts which can lead to host-dependent execution which some
runtimes may not desire.
Defaults to true
.
Sourcepub const MULTI_MEMORY: WasmFeatures = _
pub const MULTI_MEMORY: WasmFeatures = _
The WebAssembly multi memory proposal.
Defaults to true
.
Sourcepub const EXCEPTIONS: WasmFeatures = _
pub const EXCEPTIONS: WasmFeatures = _
The WebAssembly exception handling proposal.
Defaults to false
.
Sourcepub const MEMORY64: WasmFeatures = _
pub const MEMORY64: WasmFeatures = _
The WebAssembly memory64 proposal.
Defaults to false
.
Sourcepub const EXTENDED_CONST: WasmFeatures = _
pub const EXTENDED_CONST: WasmFeatures = _
The WebAssembly extended_const proposal.
Defaults to true
.
Sourcepub const COMPONENT_MODEL: WasmFeatures = _
pub const COMPONENT_MODEL: WasmFeatures = _
The WebAssembly component model proposal.
Defaults to true
.
Sourcepub const FUNCTION_REFERENCES: WasmFeatures = _
pub const FUNCTION_REFERENCES: WasmFeatures = _
The WebAssembly typed function references proposal.
Defaults to false
.
Sourcepub const MEMORY_CONTROL: WasmFeatures = _
pub const MEMORY_CONTROL: WasmFeatures = _
The WebAssembly memory control proposal.
Defaults to false
.
Sourcepub const GC: WasmFeatures = _
pub const GC: WasmFeatures = _
The WebAssembly gc proposal.
Defaults to false
.
Sourcepub const CUSTOM_PAGE_SIZES: WasmFeatures = _
pub const CUSTOM_PAGE_SIZES: WasmFeatures = _
The WebAssembly custom-page-sizes
proposal.
Defaults to false
.
Sourcepub const COMPONENT_MODEL_VALUES: WasmFeatures = _
pub const COMPONENT_MODEL_VALUES: WasmFeatures = _
Support for the value
type in the component model proposal.
Defaults to false
.
Sourcepub const COMPONENT_MODEL_NESTED_NAMES: WasmFeatures = _
pub const COMPONENT_MODEL_NESTED_NAMES: WasmFeatures = _
Support for the nested namespaces and projects in component model names.
Defaults to false
.
Sourcepub const COMPONENT_MODEL_MORE_FLAGS: WasmFeatures = _
pub const COMPONENT_MODEL_MORE_FLAGS: WasmFeatures = _
Support for more than 32 flags per-type in the component model.
Defaults to false
.
Sourcepub const COMPONENT_MODEL_MULTIPLE_RETURNS: WasmFeatures = _
pub const COMPONENT_MODEL_MULTIPLE_RETURNS: WasmFeatures = _
Support for multiple return values in a component model function.
Defaults to false
.
Sourcepub const LEGACY_EXCEPTIONS: WasmFeatures = _
pub const LEGACY_EXCEPTIONS: WasmFeatures = _
The WebAssembly legacy exception handling proposal (phase 1)
§Note
Support this feature as long as all leading browsers also support it
https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/legacy/Exceptions.md
Defaults to false
.
Source§impl WasmFeatures
impl WasmFeatures
Sourcepub const fn empty() -> WasmFeatures
pub const fn empty() -> WasmFeatures
Get a flags value with all bits unset.
Sourcepub const fn all() -> WasmFeatures
pub const fn all() -> WasmFeatures
Get a flags value with all known bits set.
Sourcepub const fn bits(&self) -> u32
pub const fn bits(&self) -> u32
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
Sourcepub const fn from_bits(bits: u32) -> Option<WasmFeatures>
pub const fn from_bits(bits: u32) -> Option<WasmFeatures>
Convert from a bits value.
This method will return None
if any unknown bits are set.
Sourcepub const fn from_bits_truncate(bits: u32) -> WasmFeatures
pub const fn from_bits_truncate(bits: u32) -> WasmFeatures
Convert from a bits value, unsetting any unknown bits.
Sourcepub const fn from_bits_retain(bits: u32) -> WasmFeatures
pub const fn from_bits_retain(bits: u32) -> WasmFeatures
Convert from a bits value exactly.
Sourcepub fn from_name(name: &str) -> Option<WasmFeatures>
pub fn from_name(name: &str) -> Option<WasmFeatures>
Get a flags value with the bits of a flag with the given name set.
This method will return None
if name
is empty or doesn’t
correspond to any named flag.
Sourcepub const fn intersects(&self, other: WasmFeatures) -> bool
pub const fn intersects(&self, other: WasmFeatures) -> bool
Whether any set bits in a source flags value are also set in a target flags value.
Sourcepub const fn contains(&self, other: WasmFeatures) -> bool
pub const fn contains(&self, other: WasmFeatures) -> bool
Whether all set bits in a source flags value are also set in a target flags value.
Sourcepub fn insert(&mut self, other: WasmFeatures)
pub fn insert(&mut self, other: WasmFeatures)
The bitwise or (|
) of the bits in two flags values.
Sourcepub fn remove(&mut self, other: WasmFeatures)
pub fn remove(&mut self, other: WasmFeatures)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
remove
won’t truncate other
, but the !
operator will.
Sourcepub fn toggle(&mut self, other: WasmFeatures)
pub fn toggle(&mut self, other: WasmFeatures)
The bitwise exclusive-or (^
) of the bits in two flags values.
Sourcepub fn set(&mut self, other: WasmFeatures, value: bool)
pub fn set(&mut self, other: WasmFeatures, value: bool)
Call insert
when value
is true
or remove
when value
is false
.
Sourcepub const fn intersection(self, other: WasmFeatures) -> WasmFeatures
pub const fn intersection(self, other: WasmFeatures) -> WasmFeatures
The bitwise and (&
) of the bits in two flags values.
Sourcepub const fn union(self, other: WasmFeatures) -> WasmFeatures
pub const fn union(self, other: WasmFeatures) -> WasmFeatures
The bitwise or (|
) of the bits in two flags values.
Sourcepub const fn difference(self, other: WasmFeatures) -> WasmFeatures
pub const fn difference(self, other: WasmFeatures) -> WasmFeatures
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
Sourcepub const fn symmetric_difference(self, other: WasmFeatures) -> WasmFeatures
pub const fn symmetric_difference(self, other: WasmFeatures) -> WasmFeatures
The bitwise exclusive-or (^
) of the bits in two flags values.
Sourcepub const fn complement(self) -> WasmFeatures
pub const fn complement(self) -> WasmFeatures
The bitwise negation (!
) of the bits in a flags value, truncating the result.
Source§impl WasmFeatures
impl WasmFeatures
Sourcepub const fn iter(&self) -> Iter<WasmFeatures>
pub const fn iter(&self) -> Iter<WasmFeatures>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
Sourcepub const fn iter_names(&self) -> IterNames<WasmFeatures>
pub const fn iter_names(&self) -> IterNames<WasmFeatures>
Yield a set of contained named flags values.
This method is like iter
, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Source§impl WasmFeatures
impl WasmFeatures
Sourcepub fn from_inflated(inflated: WasmFeaturesInflated) -> WasmFeatures
pub fn from_inflated(inflated: WasmFeaturesInflated) -> WasmFeatures
Construct a bit-packed WasmFeatures
from the inflated struct version.
Sourcepub fn inflate(&self) -> WasmFeaturesInflated
pub fn inflate(&self) -> WasmFeaturesInflated
Inflate these bit-packed features into a struct with a field per feature.
Although the inflated struct takes up much more memory than the bit-packed version, its fields can be exhaustively matched upon. This makes it useful for temporarily checking against, while keeping the bit-packed version as the method of storing the features for longer periods of time.
Sourcepub fn mutable_global(&self) -> bool
pub fn mutable_global(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn saturating_float_to_int(&self) -> bool
pub fn saturating_float_to_int(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn sign_extension(&self) -> bool
pub fn sign_extension(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn reference_types(&self) -> bool
pub fn reference_types(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn multi_value(&self) -> bool
pub fn multi_value(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn bulk_memory(&self) -> bool
pub fn bulk_memory(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn relaxed_simd(&self) -> bool
pub fn relaxed_simd(&self) -> bool
Returns whether this feature is enabled in this feature set.
Returns whether this feature is enabled in this feature set.
Sourcepub fn multi_memory(&self) -> bool
pub fn multi_memory(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn exceptions(&self) -> bool
pub fn exceptions(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn extended_const(&self) -> bool
pub fn extended_const(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn component_model(&self) -> bool
pub fn component_model(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn function_references(&self) -> bool
pub fn function_references(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn memory_control(&self) -> bool
pub fn memory_control(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn custom_page_sizes(&self) -> bool
pub fn custom_page_sizes(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn component_model_values(&self) -> bool
pub fn component_model_values(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn component_model_nested_names(&self) -> bool
pub fn component_model_nested_names(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn component_model_more_flags(&self) -> bool
pub fn component_model_more_flags(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn component_model_multiple_returns(&self) -> bool
pub fn component_model_multiple_returns(&self) -> bool
Returns whether this feature is enabled in this feature set.
Sourcepub fn legacy_exceptions(&self) -> bool
pub fn legacy_exceptions(&self) -> bool
Returns whether this feature is enabled in this feature set.
Trait Implementations§
Source§impl Binary for WasmFeatures
impl Binary for WasmFeatures
Source§impl BitAnd for WasmFeatures
impl BitAnd for WasmFeatures
Source§fn bitand(self, other: WasmFeatures) -> WasmFeatures
fn bitand(self, other: WasmFeatures) -> WasmFeatures
The bitwise and (&
) of the bits in two flags values.
Source§type Output = WasmFeatures
type Output = WasmFeatures
&
operator.Source§impl BitAndAssign for WasmFeatures
impl BitAndAssign for WasmFeatures
Source§fn bitand_assign(&mut self, other: WasmFeatures)
fn bitand_assign(&mut self, other: WasmFeatures)
The bitwise and (&
) of the bits in two flags values.
Source§impl BitOr for WasmFeatures
impl BitOr for WasmFeatures
Source§fn bitor(self, other: WasmFeatures) -> WasmFeatures
fn bitor(self, other: WasmFeatures) -> WasmFeatures
The bitwise or (|
) of the bits in two flags values.
Source§type Output = WasmFeatures
type Output = WasmFeatures
|
operator.Source§impl BitOrAssign for WasmFeatures
impl BitOrAssign for WasmFeatures
Source§fn bitor_assign(&mut self, other: WasmFeatures)
fn bitor_assign(&mut self, other: WasmFeatures)
The bitwise or (|
) of the bits in two flags values.
Source§impl BitXor for WasmFeatures
impl BitXor for WasmFeatures
Source§fn bitxor(self, other: WasmFeatures) -> WasmFeatures
fn bitxor(self, other: WasmFeatures) -> WasmFeatures
The bitwise exclusive-or (^
) of the bits in two flags values.
Source§type Output = WasmFeatures
type Output = WasmFeatures
^
operator.Source§impl BitXorAssign for WasmFeatures
impl BitXorAssign for WasmFeatures
Source§fn bitxor_assign(&mut self, other: WasmFeatures)
fn bitxor_assign(&mut self, other: WasmFeatures)
The bitwise exclusive-or (^
) of the bits in two flags values.
Source§impl Clone for WasmFeatures
impl Clone for WasmFeatures
Source§fn clone(&self) -> WasmFeatures
fn clone(&self) -> WasmFeatures
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for WasmFeatures
impl Debug for WasmFeatures
Source§impl Default for WasmFeatures
impl Default for WasmFeatures
Source§fn default() -> WasmFeatures
fn default() -> WasmFeatures
Source§impl Extend<WasmFeatures> for WasmFeatures
impl Extend<WasmFeatures> for WasmFeatures
Source§fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = WasmFeatures>,
fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = WasmFeatures>,
The bitwise or (|
) of the bits in each flags value.
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Source§impl Flags for WasmFeatures
impl Flags for WasmFeatures
Source§const FLAGS: &'static [Flag<WasmFeatures>] = _
const FLAGS: &'static [Flag<WasmFeatures>] = _
Source§fn from_bits_retain(bits: u32) -> WasmFeatures
fn from_bits_retain(bits: u32) -> WasmFeatures
Source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
Source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
Source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
Source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|
) of the bits in two flags values.Source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!
). Read moreSource§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^
) of the bits in two flags values.Source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&
) of the bits in two flags values.Source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!
). Read moreSource§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^
) of the bits in two flags values.Source§fn complement(self) -> Self
fn complement(self) -> Self
!
) of the bits in a flags value, truncating the result.Source§impl From<WasmFeatures> for WasmFeaturesInflated
impl From<WasmFeatures> for WasmFeaturesInflated
Source§fn from(features: WasmFeatures) -> WasmFeaturesInflated
fn from(features: WasmFeatures) -> WasmFeaturesInflated
Source§impl From<WasmFeaturesInflated> for WasmFeatures
impl From<WasmFeaturesInflated> for WasmFeatures
Source§fn from(inflated: WasmFeaturesInflated) -> WasmFeatures
fn from(inflated: WasmFeaturesInflated) -> WasmFeatures
Source§impl FromIterator<WasmFeatures> for WasmFeatures
impl FromIterator<WasmFeatures> for WasmFeatures
Source§fn from_iter<T>(iterator: T) -> WasmFeatureswhere
T: IntoIterator<Item = WasmFeatures>,
fn from_iter<T>(iterator: T) -> WasmFeatureswhere
T: IntoIterator<Item = WasmFeatures>,
The bitwise or (|
) of the bits in each flags value.
Source§impl Hash for WasmFeatures
impl Hash for WasmFeatures
Source§impl IntoIterator for WasmFeatures
impl IntoIterator for WasmFeatures
Source§type Item = WasmFeatures
type Item = WasmFeatures
Source§type IntoIter = Iter<WasmFeatures>
type IntoIter = Iter<WasmFeatures>
Source§fn into_iter(self) -> <WasmFeatures as IntoIterator>::IntoIter
fn into_iter(self) -> <WasmFeatures as IntoIterator>::IntoIter
Source§impl LowerHex for WasmFeatures
impl LowerHex for WasmFeatures
Source§impl Not for WasmFeatures
impl Not for WasmFeatures
Source§fn not(self) -> WasmFeatures
fn not(self) -> WasmFeatures
The bitwise negation (!
) of the bits in a flags value, truncating the result.
Source§type Output = WasmFeatures
type Output = WasmFeatures
!
operator.Source§impl Octal for WasmFeatures
impl Octal for WasmFeatures
Source§impl Sub for WasmFeatures
impl Sub for WasmFeatures
Source§fn sub(self, other: WasmFeatures) -> WasmFeatures
fn sub(self, other: WasmFeatures) -> WasmFeatures
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
Source§type Output = WasmFeatures
type Output = WasmFeatures
-
operator.Source§impl SubAssign for WasmFeatures
impl SubAssign for WasmFeatures
Source§fn sub_assign(&mut self, other: WasmFeatures)
fn sub_assign(&mut self, other: WasmFeatures)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
Source§impl UpperHex for WasmFeatures
impl UpperHex for WasmFeatures
impl Copy for WasmFeatures
Auto Trait Implementations§
impl Freeze for WasmFeatures
impl RefUnwindSafe for WasmFeatures
impl Send for WasmFeatures
impl Sync for WasmFeatures
impl Unpin for WasmFeatures
impl UnwindSafe for WasmFeatures
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
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