[−][src]Enum rustc_mir::interpret::operand::Immediate

pub enum Immediate<Tag = ()> {
    Scalar(ScalarMaybeUninit<Tag>),
    ScalarPair(ScalarMaybeUninit<Tag>, ScalarMaybeUninit<Tag>),
}

An Immediate represents a single immediate self-contained Rust value.

For optimization of a few very common cases, there is also a representation for a pair of primitive values (ScalarPair). It allows Miri to avoid making allocations for checked binary operations and wide pointers. This idea was taken from rustc's codegen. In particular, thanks to ScalarPair, arithmetic operations and casts can be entirely defined on Immediate, and do not have to work with a Place.

Variants

Scalar(ScalarMaybeUninit<Tag>)
ScalarPair(ScalarMaybeUninit<Tag>, ScalarMaybeUninit<Tag>)

Implementations

impl<'tcx, Tag> Immediate<Tag>[src]

pub fn new_slice(val: Scalar<Tag>, len: u64, cx: &impl HasDataLayout) -> Self[src]

pub fn new_dyn_trait(val: Scalar<Tag>, vtable: Pointer<Tag>) -> Self[src]

pub fn to_scalar_or_uninit(self) -> ScalarMaybeUninit<Tag>[src]

pub fn to_scalar(self) -> InterpResult<'tcx, Scalar<Tag>>[src]

pub fn to_scalar_pair(self) -> InterpResult<'tcx, (Scalar<Tag>, Scalar<Tag>)>[src]

Trait Implementations

impl<Tag: Clone> Clone for Immediate<Tag>[src]

impl<Tag: Copy> Copy for Immediate<Tag>[src]

impl<Tag: Debug> Debug for Immediate<Tag>[src]

impl<Tag: Eq> Eq for Immediate<Tag>[src]

impl<Tag> From<Pointer<Tag>> for Immediate<Tag>[src]

impl<Tag> From<Scalar<Tag>> for Immediate<Tag>[src]

impl<Tag> From<ScalarMaybeUninit<Tag>> for Immediate<Tag>[src]

impl<Tag: Hash> Hash for Immediate<Tag>[src]

impl<'__ctx, Tag> HashStable<StableHashingContext<'__ctx>> for Immediate<Tag> where
    Tag: HashStable<StableHashingContext<'__ctx>>, 
[src]

impl<Tag: PartialEq> PartialEq<Immediate<Tag>> for Immediate<Tag>[src]

impl<Tag> StructuralEq for Immediate<Tag>[src]

impl<Tag> StructuralPartialEq for Immediate<Tag>[src]

Auto Trait Implementations

impl<Tag> RefUnwindSafe for Immediate<Tag> where
    Tag: RefUnwindSafe, 

impl<Tag> Send for Immediate<Tag> where
    Tag: Send, 

impl<Tag> Sync for Immediate<Tag> where
    Tag: Sync, 

impl<Tag> Unpin for Immediate<Tag> where
    Tag: Unpin, 

impl<Tag> UnwindSafe for Immediate<Tag> where
    Tag: UnwindSafe, 

Blanket Implementations

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

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone, 
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> WithConstness for T[src]