WasmFeatures

Struct WasmFeatures 

pub struct WasmFeatures(/* private fields */);
Expand description

Flags for features that are enabled for validation.

This type controls the set of WebAssembly proposals and features that are active during validation and parsing of WebAssembly binaries. This is used in conjunction with Validator::new_with_features for example.

The Default implementation for this structure returns the set of supported WebAssembly proposals this crate implements. All features are required to be in Phase 4 or above in the WebAssembly standardization process.

Enabled/disabled features can affect both parsing and validation at this time. When decoding a WebAssembly binary it’s generally recommended if possible to enable all features, as is the default with BinaryReader::new. If strict conformance with historical versions of the specification are required then BinaryReader::new_features or BinaryReader::set_features can be used.

This crate additionally has a compile-time Cargo feature called features which can be used to enable/disable most of this type at compile time. This crate feature is turned on by default and enables this bitflags-representation of this structure. When the features feature is disabled then this is a zero-sized structure and no longer has any associated constants. When features are disabled all values for proposals are fixed at compile time to their defaults.

Implementations§

§

impl WasmFeatures

pub const MUTABLE_GLOBAL: WasmFeatures

The WebAssembly mutable-global proposal. Defaults to true.

pub const SATURATING_FLOAT_TO_INT: WasmFeatures

The WebAssembly saturating-float-to-int proposal. Defaults to true.

pub const SIGN_EXTENSION: WasmFeatures

The WebAssembly sign-extension-ops proposal. Defaults to true.

pub const REFERENCE_TYPES: WasmFeatures

The WebAssembly reference types proposal. Defaults to true.

pub const MULTI_VALUE: WasmFeatures

The WebAssembly multi-value proposal. Defaults to true.

pub const BULK_MEMORY: WasmFeatures

The WebAssembly bulk memory operations proposal. Defaults to true.

pub const SIMD: WasmFeatures

The WebAssembly SIMD proposal. Defaults to true.

pub const RELAXED_SIMD: WasmFeatures

The WebAssembly Relaxed SIMD proposal. Defaults to true.

pub const THREADS: WasmFeatures

The WebAssembly threads proposal. Defaults to true.

pub const SHARED_EVERYTHING_THREADS: WasmFeatures

The WebAssembly shared-everything-threads proposal; includes new component model built-ins. Defaults to false.

pub const TAIL_CALL: WasmFeatures

The WebAssembly tail-call proposal. Defaults to true.

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.

pub const MULTI_MEMORY: WasmFeatures

The WebAssembly multi memory proposal. Defaults to true.

pub const EXCEPTIONS: WasmFeatures

The WebAssembly exception handling proposal. Defaults to true.

pub const MEMORY64: WasmFeatures

The WebAssembly memory64 proposal. Defaults to true.

pub const EXTENDED_CONST: WasmFeatures

The WebAssembly extended_const proposal. Defaults to true.

pub const COMPONENT_MODEL: WasmFeatures

The WebAssembly component model proposal. Defaults to true.

pub const FUNCTION_REFERENCES: WasmFeatures

The WebAssembly typed function references proposal. Defaults to true.

pub const MEMORY_CONTROL: WasmFeatures

The WebAssembly memory control proposal. Defaults to false.

pub const GC: WasmFeatures

The WebAssembly gc proposal. Defaults to true.

pub const CUSTOM_PAGE_SIZES: WasmFeatures

The WebAssembly custom-page-sizes proposal. Defaults to false.

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.

pub const GC_TYPES: WasmFeatures

Whether or not gc types are enabled.

This feature does not correspond to any WebAssembly proposal nor concept in the specification itself. This is intended to assist embedders in disabling support for GC types at validation time. For example if an engine wants to support all of WebAssembly except a runtime garbage collector it could disable this feature.

This features is enabled by default and is used to gate types such as externref or anyref. Note that the requisite WebAssembly proposal must also be enabled for types like externref, meaning that it requires both REFERENCE_TYPES and GC_TYPE to be enabled.

Note that the funcref and exnref types are not gated by this feature. Those are expected to not require a full garbage collector so are not gated by this. Defaults to true.

pub const STACK_SWITCHING: WasmFeatures

The WebAssembly stack-switching proposal. Defaults to false.

pub const WIDE_ARITHMETIC: WasmFeatures

The WebAssembly wide-arithmetic proposal. Defaults to false.

pub const CM_VALUES: WasmFeatures

Support for the value type in the component model proposal.

Corresponds to the 🪙 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_NESTED_NAMES: WasmFeatures

Support for the nested namespaces and projects in component model names.

Corresponds to the 🪺 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_ASYNC: WasmFeatures

Support for component model async lift/lower ABI, as well as streams, futures, and errors.

Corresponds to the 🔀 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_ASYNC_STACKFUL: WasmFeatures

Gates the “stackful ABI” in the component model async proposal.

Corresponds to the 🚟 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_ASYNC_BUILTINS: WasmFeatures

Gates some intrinsics being marked with async in the component model async proposal.

Corresponds to the 🚝 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_THREADING: WasmFeatures

Support for threading in the component model proposal.

Corresponds to the 🧵 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_ERROR_CONTEXT: WasmFeatures

Gates some intrinsics being marked with error-context in the component model async proposal.

Corresponds to the 📝 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_FIXED_SIZE_LIST: WasmFeatures

Support for fixed size lists

Corresponds to the 🔧 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CM_GC: WasmFeatures

Support for Wasm GC in the component model proposal.

Corresponds to the 🛸 character in https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md. Defaults to false.

pub const CALL_INDIRECT_OVERLONG: WasmFeatures

Subset of the reference-types WebAssembly proposal which only encompasses the leb-encoding of the table immediate to the call_indirect instruction, enabling over-long encodings of an integer for example.

This is a subcomponent of the “lime1” feature. Defaults to true.

pub const BULK_MEMORY_OPT: WasmFeatures

Subset of the bulk-memory proposal covering just the memory.copy and memory.fill instructions.

This is a subcomponent of the “lime1” feature. Defaults to true.

§

impl WasmFeatures

pub const fn empty() -> WasmFeatures

Get a flags value with all bits unset.

pub const fn all() -> WasmFeatures

Get a flags value with all known bits set.

pub const fn bits(&self) -> u64

Get the underlying bits value.

The returned value is exactly the bits set in this flags value.

pub const fn from_bits(bits: u64) -> Option<WasmFeatures>

Convert from a bits value.

This method will return None if any unknown bits are set.

pub const fn from_bits_truncate(bits: u64) -> WasmFeatures

Convert from a bits value, unsetting any unknown bits.

pub const fn from_bits_retain(bits: u64) -> WasmFeatures

Convert from a bits value exactly.

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.

pub const fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.

pub const fn is_all(&self) -> bool

Whether all known bits in this flags value are set.

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.

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.

pub fn insert(&mut self, other: WasmFeatures)

The bitwise or (|) of the bits in two flags values.

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.

pub fn toggle(&mut self, other: WasmFeatures)

The bitwise exclusive-or (^) of the bits in two flags values.

pub fn set(&mut self, other: WasmFeatures, value: bool)

Call insert when value is true or remove when value is false.

pub const fn intersection(self, other: WasmFeatures) -> WasmFeatures

The bitwise and (&) of the bits in two flags values.

pub const fn union(self, other: WasmFeatures) -> WasmFeatures

The bitwise or (|) of the bits in two flags values.

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.

pub const fn symmetric_difference(self, other: WasmFeatures) -> WasmFeatures

The bitwise exclusive-or (^) of the bits in two flags values.

pub const fn complement(self) -> WasmFeatures

The bitwise negation (!) of the bits in a flags value, truncating the result.

§

impl 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.

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.

§

impl WasmFeatures

pub fn from_inflated(inflated: WasmFeaturesInflated) -> WasmFeatures

Construct a bit-packed WasmFeatures from the inflated struct version.

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.

pub fn mutable_global(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn saturating_float_to_int(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn sign_extension(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn reference_types(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn multi_value(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn bulk_memory(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn simd(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn relaxed_simd(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn threads(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn shared_everything_threads(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn tail_call(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn floats(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn multi_memory(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn exceptions(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn memory64(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn extended_const(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn component_model(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn function_references(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn memory_control(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn gc(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn custom_page_sizes(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn legacy_exceptions(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn gc_types(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn stack_switching(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn wide_arithmetic(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_values(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_nested_names(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_async(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_async_stackful(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_async_builtins(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_threading(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_error_context(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_fixed_size_list(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn cm_gc(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn call_indirect_overlong(&self) -> bool

Returns whether this feature is enabled in this feature set.

pub fn bulk_memory_opt(&self) -> bool

Returns whether this feature is enabled in this feature set.

§

impl WasmFeatures

pub const MVP: WasmFeatures

The feature set associated with the MVP release of WebAssembly (its first release).

pub const WASM1: WasmFeatures

The feature set associated with the 1.0 version of the WebAssembly specification circa 2017.

https://webassembly.github.io/spec/versions/core/WebAssembly-1.0.pdf

pub const WASM2: WasmFeatures

The feature set associated with the 2.0 version of the WebAssembly specification circa 2022.

https://webassembly.github.io/spec/versions/core/WebAssembly-2.0.pdf

pub const WASM3: WasmFeatures

The feature set associated with the 3.0 version of the WebAssembly specification.

Note that as of the time of this writing the 3.0 version of the specification is not yet published. The precise set of features set here may change as that continues to evolve.

(draft) https://webassembly.github.io/spec/versions/core/WebAssembly-3.0-draft.pdf

pub const LIME1: WasmFeatures

The feature set associated with the “lime1” set of features.

Here “lime1” stands for “linear memory version 1” and is a stable set of features agreed on by both producers and consumers which is more than the MVP but does not include some more weighty engine features such as reference types, gc, etc.

https://github.com/WebAssembly/tool-conventions/blob/main/Lime.md

Trait Implementations§

§

impl Binary for WasmFeatures

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl BitAnd for WasmFeatures

§

fn bitand(self, other: WasmFeatures) -> WasmFeatures

The bitwise and (&) of the bits in two flags values.

§

type Output = WasmFeatures

The resulting type after applying the & operator.
§

impl BitAndAssign for WasmFeatures

§

fn bitand_assign(&mut self, other: WasmFeatures)

The bitwise and (&) of the bits in two flags values.

§

impl BitOr for WasmFeatures

§

fn bitor(self, other: WasmFeatures) -> WasmFeatures

The bitwise or (|) of the bits in two flags values.

§

type Output = WasmFeatures

The resulting type after applying the | operator.
§

impl BitOrAssign for WasmFeatures

§

fn bitor_assign(&mut self, other: WasmFeatures)

The bitwise or (|) of the bits in two flags values.

§

impl BitXor for WasmFeatures

§

fn bitxor(self, other: WasmFeatures) -> WasmFeatures

The bitwise exclusive-or (^) of the bits in two flags values.

§

type Output = WasmFeatures

The resulting type after applying the ^ operator.
§

impl BitXorAssign for WasmFeatures

§

fn bitxor_assign(&mut self, other: WasmFeatures)

The bitwise exclusive-or (^) of the bits in two flags values.

§

impl Clone for WasmFeatures

§

fn clone(&self) -> WasmFeatures

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for WasmFeatures

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for WasmFeatures

§

fn default() -> WasmFeatures

Returns the “default value” for a type. Read more
§

impl Extend<WasmFeatures> for 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)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
§

impl Flags for WasmFeatures

§

const FLAGS: &'static [Flag<WasmFeatures>]

The set of defined flags.
§

type Bits = u64

The underlying bits type.
§

fn bits(&self) -> u64

Get the underlying bits value. Read more
§

fn from_bits_retain(bits: u64) -> WasmFeatures

Convert from a bits value exactly.
§

fn empty() -> Self

Get a flags value with all bits unset.
§

fn all() -> Self

Get a flags value with all known bits set.
§

fn contains_unknown_bits(&self) -> bool

This method will return true if any unknown bits are set.
§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
§

fn iter(&self) -> Iter<Self>

Yield a set of contained flags values. Read more
§

fn iter_names(&self) -> IterNames<Self>

Yield a set of contained named flags values. Read more
§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in a source flags value are also set in a target flags value.
§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in a source flags value are also set in a target flags value.
§

fn truncate(&mut self)
where Self: Sized,

Remove any unknown bits from the flags.
§

fn insert(&mut self, other: Self)
where Self: Sized,

The bitwise or (|) of the bits in two flags values.
§

fn remove(&mut self, other: Self)
where Self: Sized,

The intersection of a source flags value with the complement of a target flags value (&!). Read more
§

fn toggle(&mut self, other: Self)
where Self: Sized,

The bitwise exclusive-or (^) of the bits in two flags values.
§

fn set(&mut self, other: Self, value: bool)
where Self: Sized,

Call [Flags::insert] when value is true or [Flags::remove] when value is false.
§

fn clear(&mut self)
where Self: Sized,

Unsets all bits in the flags.
§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.
§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.
§

fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!). Read more
§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.
§

fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.
§

impl From<WasmFeaturesInflated> for WasmFeatures

§

fn from(inflated: WasmFeaturesInflated) -> WasmFeatures

Converts to this type from the input type.
§

impl FromIterator<WasmFeatures> for WasmFeatures

§

fn from_iter<T>(iterator: T) -> WasmFeatures
where T: IntoIterator<Item = WasmFeatures>,

The bitwise or (|) of the bits in each flags value.

§

impl Hash for WasmFeatures

§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl IntoIterator for WasmFeatures

§

type Item = WasmFeatures

The type of the elements being iterated over.
§

type IntoIter = Iter<WasmFeatures>

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <WasmFeatures as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl LowerHex for WasmFeatures

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Not for WasmFeatures

§

fn not(self) -> WasmFeatures

The bitwise negation (!) of the bits in a flags value, truncating the result.

§

type Output = WasmFeatures

The resulting type after applying the ! operator.
§

impl Octal for WasmFeatures

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl PartialEq for WasmFeatures

§

fn eq(&self, other: &WasmFeatures) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Sub for 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.

§

type Output = WasmFeatures

The resulting type after applying the - operator.
§

impl SubAssign for 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.

§

impl UpperHex for WasmFeatures

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Copy for WasmFeatures

§

impl Eq for WasmFeatures

§

impl StructuralPartialEq for WasmFeatures

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.