Struct cranelift_wasm::wasmparser::PackedIndex

source ·
pub struct PackedIndex(/* private fields */);
Expand description

A packed representation of a type index.

This type is morally an enum of either:

  1. An index into a Wasm module’s type space.

  2. A CoreTypeId identifier.

  3. An index into a recursion group’s elements.

The latter two variants are canonical while the first is not. Reading raw types will produce (1), while working with types after validation will produce (2) and (3).

Implementations§

source§

impl PackedIndex

source

pub fn from_module_index(index: u32) -> Option<PackedIndex>

Construct a PackedIndex from an index into a module’s types space.

source

pub fn from_rec_group_index(index: u32) -> Option<PackedIndex>

Construct a PackedIndex from an index into the index’s containing recursion group.

source

pub fn from_id(id: CoreTypeId) -> Option<PackedIndex>

Construct a PackedIndex from the given CoreTypeId.

source

pub fn is_canonical(&self) -> bool

Is this index in canonical form?

source

pub fn unpack(&self) -> UnpackedIndex

Uncompress this packed index into an actual enum that can be matched on.

source

pub fn as_module_index(&self) -> Option<u32>

Get the underlying index into a module’s types space, if any.

source

pub fn as_rec_group_index(&self) -> Option<u32>

Get the underlying index into the containing recursion group, if any.

source

pub fn as_core_type_id(&self) -> Option<CoreTypeId>

Get the underlying CoreTypeId, if any.

Trait Implementations§

source§

impl Clone for PackedIndex

source§

fn clone(&self) -> PackedIndex

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for PackedIndex

source§

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

Formats the value using the given formatter. Read more
source§

impl Display for PackedIndex

source§

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

Formats the value using the given formatter. Read more
source§

impl Hash for PackedIndex

source§

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
source§

impl PartialEq for PackedIndex

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

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

impl Copy for PackedIndex

source§

impl Eq for PackedIndex

source§

impl StructuralPartialEq for PackedIndex

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

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

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

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

source§

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

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

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

source§

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

Checks if this value is equivalent to the given key. Read more
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> ToOwned for T
where T: Clone,

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.