pub(super) enum LocalValue<Prov: Provenance = CtfeProvenance> {
Dead,
Live(Operand<Prov>),
}
Expand description
Current value of a local variable
This does not store the type of the local; the type is given by body.local_decls
and can never
change, so by not storing here we avoid having to maintain that as an invariant.
Variants§
Dead
This local is not currently alive, and cannot be used at all.
Live(Operand<Prov>)
A normal, live local.
Mostly for convenience, we re-use the Operand
type here.
This is an optimization over just always having a pointer here;
we can thus avoid doing an allocation when the local just stores
immediate values and never has its address taken.
Trait Implementations§
source§impl<Prov: Clone + Provenance> Clone for LocalValue<Prov>
impl<Prov: Clone + Provenance> Clone for LocalValue<Prov>
source§fn clone(&self) -> LocalValue<Prov>
fn clone(&self) -> LocalValue<Prov>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<Prov: Debug + Provenance> Debug for LocalValue<Prov>
impl<Prov: Debug + Provenance> Debug for LocalValue<Prov>
impl<Prov: Copy + Provenance> Copy for LocalValue<Prov>
Auto Trait Implementations§
impl<Prov> DynSend for LocalValue<Prov>where
Prov: DynSend,
impl<Prov> DynSync for LocalValue<Prov>where
Prov: DynSync,
impl<Prov> Freeze for LocalValue<Prov>where
Prov: Freeze,
impl<Prov> RefUnwindSafe for LocalValue<Prov>where
Prov: RefUnwindSafe,
impl<Prov> Send for LocalValue<Prov>where
Prov: Send,
impl<Prov> Sync for LocalValue<Prov>where
Prov: Sync,
impl<Prov> Unpin for LocalValue<Prov>where
Prov: Unpin,
impl<Prov> UnwindSafe for LocalValue<Prov>where
Prov: UnwindSafe,
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.