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 IndexVec<MovePathIndex, MovePath<'tcx>>
) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
pub fn parents<'a>(
&self,
move_paths: &'a IndexVec<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 IndexVec<MovePathIndex, MovePath<'tcx>>
) -> impl 'a + Iterator<Item = (MovePathIndex, &'a MovePath<'tcx>)>
pub fn children<'a>(
&self,
move_paths: &'a IndexVec<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: &IndexVec<MovePathIndex, MovePath<'_>>,
f: impl Fn(MovePathIndex) -> bool
) -> Option<MovePathIndex>
pub fn find_descendant(
&self,
move_paths: &IndexVec<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> !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§
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