Struct rustc_mir_dataflow::move_paths::MovePath
source · pub struct MovePath<'tcx> {
pub next_sibling: Option<MovePathIndex>,
pub first_child: Option<MovePathIndex>,
pub parent: Option<MovePathIndex>,
pub place: Place<'tcx>,
}
Expand description
MovePath
is a canonicalized representation of a path that is
moved or assigned to.
It follows a tree structure.
Given struct X { m: M, n: N }
and x: X
, moves like drop x.m;
move out of the place x.m
.
The MovePaths representing x.m
and x.n
are siblings (that is,
one of them will link to the other via the next_sibling
field,
and the other will have no entry in its next_sibling
field), and
they both have the MovePath representing x
as their parent.
Fields§
§next_sibling: Option<MovePathIndex>
§first_child: Option<MovePathIndex>
§parent: Option<MovePathIndex>
§place: Place<'tcx>
Implementations§
source§impl<'tcx> MovePath<'tcx>
impl<'tcx> MovePath<'tcx>
sourcepub fn parents<'a>(
&self,
move_paths: &'a IndexSlice<MovePathIndex, MovePath<'tcx>>
) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
pub fn parents<'a>( &self, move_paths: &'a IndexSlice<MovePathIndex, MovePath<'tcx>> ) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
Returns an iterator over the parents of self
.
sourcepub fn children<'a>(
&self,
move_paths: &'a IndexSlice<MovePathIndex, MovePath<'tcx>>
) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
pub fn children<'a>( &self, move_paths: &'a IndexSlice<MovePathIndex, MovePath<'tcx>> ) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
Returns an iterator over the immediate children of self
.
sourcepub fn find_descendant(
&self,
move_paths: &IndexSlice<MovePathIndex, MovePath<'_>>,
f: impl Fn(MovePathIndex) -> bool
) -> Option<MovePathIndex>
pub fn find_descendant( &self, move_paths: &IndexSlice<MovePathIndex, MovePath<'_>>, f: impl Fn(MovePathIndex) -> bool ) -> Option<MovePathIndex>
Finds the closest descendant of self
for which f
returns true
using a breadth-first
search.
f
will not be called on self
.
Trait Implementations§
Auto Trait Implementations§
impl<'tcx> DynSend for MovePath<'tcx>
impl<'tcx> DynSync for MovePath<'tcx>
impl<'tcx> Freeze for MovePath<'tcx>
impl<'tcx> !RefUnwindSafe for MovePath<'tcx>
impl<'tcx> Send for MovePath<'tcx>
impl<'tcx> Sync for MovePath<'tcx>
impl<'tcx> Unpin for MovePath<'tcx>
impl<'tcx> !UnwindSafe for MovePath<'tcx>
Blanket Implementations§
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
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: 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: 32 bytes