Struct rustc_const_eval::interpret::eval_context::LocalState
source · pub struct LocalState<'tcx, Prov: Provenance = AllocId> {
pub value: LocalValue<Prov>,
pub layout: Cell<Option<TyAndLayout<'tcx>>>,
}
Expand description
State of a local variable including a memoized layout
Fields§
§value: LocalValue<Prov>
§layout: Cell<Option<TyAndLayout<'tcx>>>
Don’t modify if Some
, this is only used to prevent computing the layout twice
Implementations§
source§impl<'tcx, Prov: Provenance + 'static> LocalState<'tcx, Prov>
impl<'tcx, Prov: Provenance + 'static> LocalState<'tcx, Prov>
sourcepub fn access(&self) -> InterpResult<'tcx, &Operand<Prov>>
pub fn access(&self) -> InterpResult<'tcx, &Operand<Prov>>
Read the local’s value or error if the local is not yet live or not live anymore.
sourcepub fn access_mut(&mut self) -> InterpResult<'tcx, &mut Operand<Prov>>
pub fn access_mut(&mut self) -> InterpResult<'tcx, &mut Operand<Prov>>
Overwrite the local. If the local can be overwritten in place, return a reference
to do so; otherwise return the MemPlace
to consult instead.
Note: This may only be invoked from the Machine::access_local_mut
hook and not from
anywhere else. You may be invalidating machine invariants if you do!
Trait Implementations§
source§impl<'tcx, Prov: Clone + Provenance> Clone for LocalState<'tcx, Prov>
impl<'tcx, Prov: Clone + Provenance> Clone for LocalState<'tcx, Prov>
source§fn clone(&self) -> LocalState<'tcx, Prov>
fn clone(&self) -> LocalState<'tcx, 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 moreAuto Trait Implementations§
impl<'tcx, Prov = AllocId> !RefUnwindSafe for LocalState<'tcx, Prov>
impl<'tcx, Prov = AllocId> !Send for LocalState<'tcx, Prov>
impl<'tcx, Prov = AllocId> !Sync for LocalState<'tcx, Prov>
impl<'tcx, Prov> Unpin for LocalState<'tcx, Prov>where
Prov: Unpin,
impl<'tcx, Prov = AllocId> !UnwindSafe for LocalState<'tcx, Prov>
Blanket Implementations§
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.