pub struct SwapChildren<D>(/* private fields */);
Expand description
A wrapper around a DAG-like reference that swaps the two children
This can be useful to modify the PostOrderIter
behaviour to yield
right children before left children.
Since it works by relabelling the children, when iterating with this
adaptor, the “left” and “right” child indices will be inconsistent
with the returned nodes. To correct this, you need to call
PostOrderIterItem::unswap
.
To avoid confusion, this structure cannot be directly costructed.
Instead it is implicit in the DagLike::rtl_post_order_iter
method.
Trait Implementations§
Source§impl<D: Clone> Clone for SwapChildren<D>
impl<D: Clone> Clone for SwapChildren<D>
Source§fn clone(&self) -> SwapChildren<D>
fn clone(&self) -> SwapChildren<D>
Returns a duplicate 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 moreSource§impl<D: DagLike> DagLike for SwapChildren<D>
impl<D: DagLike> DagLike for SwapChildren<D>
Source§fn as_dag_node(&self) -> Dag<Self>
fn as_dag_node(&self) -> Dag<Self>
Interpret the node as a DAG node
Source§fn left_child(&self) -> Option<Self>
fn left_child(&self) -> Option<Self>
Accessor for the left child of the node, if one exists
Source§fn right_child(&self) -> Option<Self>
fn right_child(&self) -> Option<Self>
Accessor for the right child of the node, if one exists
Source§fn n_children(&self) -> usize
fn n_children(&self) -> usize
Number of children that the node has. Read more
Source§fn rtl_post_order_iter<S: SharingTracker<SwapChildren<Self>> + Default>(
self,
) -> RtlPostOrderIter<Self, S>
fn rtl_post_order_iter<S: SharingTracker<SwapChildren<Self>> + Default>( self, ) -> RtlPostOrderIter<Self, S>
Obtains an iterator of all the nodes rooted at the DAG, in right-to-left post order. Read more
Source§fn pre_order_iter<S: SharingTracker<Self> + Default>(
self,
) -> PreOrderIter<Self, S> ⓘ
fn pre_order_iter<S: SharingTracker<Self> + Default>( self, ) -> PreOrderIter<Self, S> ⓘ
Obtains an iterator of all the nodes rooted at the DAG, in pre-order.
Source§fn verbose_pre_order_iter<S: SharingTracker<Self> + Default>(
self,
max_depth: Option<usize>,
) -> VerbosePreOrderIter<Self, S> ⓘwhere
Self: Clone,
fn verbose_pre_order_iter<S: SharingTracker<Self> + Default>(
self,
max_depth: Option<usize>,
) -> VerbosePreOrderIter<Self, S> ⓘwhere
Self: Clone,
Obtains a verbose iterator of all the nodes rooted at the DAG, in pre-order. Read more
Source§fn post_order_iter<S: SharingTracker<Self> + Default>(
self,
) -> PostOrderIter<Self, S> ⓘ
fn post_order_iter<S: SharingTracker<Self> + Default>( self, ) -> PostOrderIter<Self, S> ⓘ
Obtains an iterator of all the nodes rooted at the DAG, in post order. Read more
Checks whether a DAG’s internal sharing (as expressed by shared pointers)
matches the given target sharing.
Source§fn post_order_iter_with_tracker<S: SharingTracker<Self>>(
self,
tracker: S,
) -> PostOrderIter<Self, S> ⓘ
fn post_order_iter_with_tracker<S: SharingTracker<Self>>( self, tracker: S, ) -> PostOrderIter<Self, S> ⓘ
Obtains an post-order iterator of all the nodes rooted at DAG, using the
given tracker. Read more
Source§impl<D: Debug> Debug for SwapChildren<D>
impl<D: Debug> Debug for SwapChildren<D>
Source§impl<N, D> SharingTracker<SwapChildren<D>> for MaxSharing<N>
impl<N, D> SharingTracker<SwapChildren<D>> for MaxSharing<N>
Source§fn record(&mut self, d: &SwapChildren<D>, index: usize) -> Option<usize>
fn record(&mut self, d: &SwapChildren<D>, index: usize) -> Option<usize>
Marks an object as having been seen, and record the index
when it was seen. Read more
Source§fn seen_before(&self, d: &SwapChildren<D>) -> Option<usize>
fn seen_before(&self, d: &SwapChildren<D>) -> Option<usize>
Check whether an object has been seen before; if so, return
the index it was recorded at.
Auto Trait Implementations§
impl<D> Freeze for SwapChildren<D>where
D: Freeze,
impl<D> RefUnwindSafe for SwapChildren<D>where
D: RefUnwindSafe,
impl<D> Send for SwapChildren<D>where
D: Send,
impl<D> Sync for SwapChildren<D>where
D: Sync,
impl<D> Unpin for SwapChildren<D>where
D: Unpin,
impl<D> UnwindSafe for SwapChildren<D>where
D: UnwindSafe,
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
Mutably borrows from an owned value. Read more