Struct rustc_middle::mir::PlaceRef
source · [−]Fields
local: Local
projection: &'tcx [PlaceElem<'tcx>]
Implementations
sourceimpl<'tcx> PlaceRef<'tcx>
impl<'tcx> PlaceRef<'tcx>
sourcepub fn local_or_deref_local(&self) -> Option<Local>
pub fn local_or_deref_local(&self) -> Option<Local>
Finds the innermost Local
from this Place
, if it is either a local itself or
a single deref of a local.
sourcepub fn as_local(&self) -> Option<Local>
pub fn as_local(&self) -> Option<Local>
If this place represents a local variable like _X
with no
projections, return Some(_X)
.
pub fn last_projection(&self) -> Option<(PlaceRef<'tcx>, PlaceElem<'tcx>)>
sourcepub fn iter_projections(
self
) -> impl Iterator<Item = (PlaceRef<'tcx>, PlaceElem<'tcx>)> + DoubleEndedIterator
pub fn iter_projections(
self
) -> impl Iterator<Item = (PlaceRef<'tcx>, PlaceElem<'tcx>)> + DoubleEndedIterator
Iterate over the projections in evaluation order, i.e., the first element is the base with its projection and then subsequently more projections are added. As a concrete example, given the place a.b.c, this would yield:
- (a, .b)
- (a.b, .c)
Given a place without projections, the iterator is empty.
Trait Implementations
sourceimpl<'tcx> !PartialOrd<PlaceRef<'tcx>> for PlaceRef<'tcx>
impl<'tcx> !PartialOrd<PlaceRef<'tcx>> for PlaceRef<'tcx>
1.0.0 · sourcefn partial_cmp(&self, other: &Rhs) -> Option<Ordering>
fn partial_cmp(&self, other: &Rhs) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl<'tcx> Copy for PlaceRef<'tcx>
impl<'tcx> Eq for PlaceRef<'tcx>
impl<'tcx> StructuralEq for PlaceRef<'tcx>
impl<'tcx> StructuralPartialEq for PlaceRef<'tcx>
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for PlaceRef<'tcx>
impl<'tcx> Send for PlaceRef<'tcx>
impl<'tcx> Sync for PlaceRef<'tcx>
impl<'tcx> Unpin for PlaceRef<'tcx>
impl<'tcx> !UnwindSafe for PlaceRef<'tcx>
Blanket Implementations
sourceimpl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T where
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T where
T: Copy,
fn allocate_on(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘNotable traits for &[u8]impl<'_> Read for &[u8]impl<'_> Write for &mut [u8]
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T, R> InternIteratorElement<T, R> for T
impl<T, R> InternIteratorElement<T, R> for T
type Output = R
fn intern_with<I, F>(
iter: I,
f: F
) -> <T as InternIteratorElement<T, R>>::Output where
I: Iterator<Item = T>,
F: FnOnce(&[T]) -> R,
sourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
impl<'a, T> Captures<'a> for T where
T: ?Sized,
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: 24 bytes