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
sourceimpl<'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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more
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