enum Value<'tcx> {
Show 13 variants Opaque(usize), Constant(Const<'tcx>), Aggregate(Ty<'tcx>, VariantIdx, Vec<VnIndex>), Repeat(VnIndex, Const<'tcx>), Address { place: Place<'tcx>, provenance: usize, }, Projection(VnIndex, ProjectionElem<VnIndex, Ty<'tcx>>), Discriminant(VnIndex), Len(VnIndex), NullaryOp(NullOp<'tcx>, Ty<'tcx>), UnaryOp(UnOp, VnIndex), BinaryOp(BinOp, VnIndex, VnIndex), CheckedBinaryOp(BinOp, VnIndex, VnIndex), Cast { kind: CastKind, value: VnIndex, from: Ty<'tcx>, to: Ty<'tcx>, },
}

Variants§

§

Opaque(usize)

Used to represent values we know nothing about. The usize is a counter incremented by new_opaque.

§

Constant(Const<'tcx>)

Evaluated or unevaluated constant value.

§

Aggregate(Ty<'tcx>, VariantIdx, Vec<VnIndex>)

An aggregate value, either tuple/closure/struct/enum. This does not contain unions, as we cannot reason with the value.

§

Repeat(VnIndex, Const<'tcx>)

This corresponds to a [value; count] expression.

§

Address

Fields

§place: Place<'tcx>
§provenance: usize

Give each borrow and pointer a different provenance, so we don’t merge them.

The address of a place.

§

Projection(VnIndex, ProjectionElem<VnIndex, Ty<'tcx>>)

This is the value obtained by projecting another value.

§

Discriminant(VnIndex)

Discriminant of the given value.

§

Len(VnIndex)

Length of an array or slice.

§

NullaryOp(NullOp<'tcx>, Ty<'tcx>)

§

UnaryOp(UnOp, VnIndex)

§

BinaryOp(BinOp, VnIndex, VnIndex)

§

CheckedBinaryOp(BinOp, VnIndex, VnIndex)

§

Cast

Fields

§value: VnIndex
§from: Ty<'tcx>
§to: Ty<'tcx>

Trait Implementations§

source§

impl<'tcx> Debug for Value<'tcx>

source§

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

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

impl<'tcx> Hash for Value<'tcx>

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<'tcx> PartialEq<Value<'tcx>> for Value<'tcx>

source§

fn eq(&self, other: &Value<'tcx>) -> 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<'tcx> Eq for Value<'tcx>

source§

impl<'tcx> StructuralEq for Value<'tcx>

source§

impl<'tcx> StructuralPartialEq for Value<'tcx>

Auto Trait Implementations§

§

impl<'tcx> !RefUnwindSafe for Value<'tcx>

§

impl<'tcx> Send for Value<'tcx>

§

impl<'tcx> Sync for Value<'tcx>

§

impl<'tcx> Unpin for Value<'tcx>

§

impl<'tcx> !UnwindSafe for Value<'tcx>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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, U> TryFrom<U> for Twhere 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 Twhere 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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 48 bytes

Size for each variant:

  • Opaque: 15 bytes
  • Constant: 47 bytes
  • Aggregate: 39 bytes
  • Repeat: 15 bytes
  • Address: 31 bytes
  • Projection: 31 bytes
  • Discriminant: 7 bytes
  • Len: 7 bytes
  • NullaryOp: 31 bytes
  • UnaryOp: 7 bytes
  • BinaryOp: 11 bytes
  • CheckedBinaryOp: 11 bytes
  • Cast: 23 bytes