Enum rupta::mir::path::PathSelector

source ·
pub enum PathSelector {
    Deref,
    Field(usize),
    UnionField(usize),
    Index,
    Subslice {
        from: u64,
        to: u64,
        from_end: bool,
    },
    Downcast(usize),
    Discriminant,
    Cast(usize),
}
Expand description

The PathSelector denotes a de-referenced item, field, or element, or slice.

Variants§

§

Deref

Given a path that denotes a reference, select the thing the reference points to.

§

Field(usize)

Select the struct field with the given index.

§

UnionField(usize)

Selects a particular type case from a type union. all fields of a union share common storage. As a result, writes to one field of a union can overwrite its other fields, and size of a union is determined by the size of its largest field.

§

Index

For each field of a union, we connect it with a union offset path. Different fields at the same position connect to the same union offset path. Therefore, when writing to one field of a union, we can update the other fields at the same offset. Index into a slice/array

§

Subslice

Fields

§from: u64
§to: u64
§from_end: bool

These indices are generated by slice patterns.

If from_end is true slice[from..slice.len() - to]. Otherwise array[from..to].

§

Downcast(usize)

“Downcast” to a variant of an ADT. Currently, MIR only introduces this for ADTs with more than one variant. The value is the ordinal of the variant.

§

Discriminant

The tag used to indicate which case of an enum is used for a particular enum value.

§

Cast(usize)

Cast a path into another type. The most common cases are casting a transparent wrapper tyoe into its inner type or casting a type into a transparent wrapper type via pointer casting.

Trait Implementations§

source§

impl Clone for PathSelector

source§

fn clone(&self) -> PathSelector

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 PathSelector

source§

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

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

impl Hash for PathSelector

source§

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

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 PathSelector

source§

fn eq(&self, other: &PathSelector) -> 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 PathSelector

source§

impl Eq for PathSelector

source§

impl StructuralPartialEq for PathSelector

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

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