bitstring_trees::tree

Struct WalkMutBorrowed

source
pub struct WalkMutBorrowed<'r, TP: TreeProperties + 'r, D = (), A = ()> { /* private fields */ }
Expand description

Walk borrowed mutable tree up and down

Some algorithms need to remember how they reached the current node via WalkedDirection as D.

When walking manually it might be useful to be able to store additional data via A.

Implementations§

source§

impl<'r, TP, D, A> WalkMutBorrowed<'r, TP, D, A>
where TP: TreeProperties,

source

pub fn up(&mut self) -> Option<D>

Walk up to parent node or tree if not at tree

source

pub fn up_with(&mut self) -> Option<(D, A)>

Walk up to parent node or tree if not at tree

source

pub fn current(&self) -> NodeOrTree<Option<&Node<TP>>, &Node<TP>>

Current node or tree

source

pub fn current_mut( &mut self, ) -> NodeOrTree<Option<&mut Node<TP>>, &mut Node<TP>>

Current mutable node or tree

If you need the result to outlive the destruction of the WalkMutBorrowed value, see into_current_mut.

source

pub fn into_current_mut( self, ) -> NodeOrTree<Option<&'r mut Node<TP>>, &'r mut Node<TP>>

Extract mutable node or tree

Also see current_mut

source§

impl<'r, TP, D, A> WalkMutBorrowed<'r, TP, D, A>
where TP: TreeProperties + 'r, D: From<WalkedDirection>,

source

pub fn down_root_with(&mut self, add: A) -> bool

Walk down from tree to root node (if at tree and not empty)

source

pub fn down_left_with(&mut self, add: A) -> bool

Walk down to left node if present and not currently at tree

source

pub fn down_right_with(&mut self, add: A) -> bool

Walk down to right node if present and not currently at tree

source

pub fn down_with(&mut self, side: bool, add: A) -> bool

Walk down to specified node if present and not currently at tree

false picks left and true picks right.

source§

impl<'r, TP, D> WalkMutBorrowed<'r, TP, D, ()>
where TP: TreeProperties + 'r, D: From<WalkedDirection>,

source

pub fn down_root(&mut self) -> bool

Walk down from tree to root node (if at tree and not empty)

source

pub fn down_left(&mut self) -> bool

Walk down to left node if present and not currently at tree

source

pub fn down_right(&mut self) -> bool

Walk down to right node if present and not currently at tree

source

pub fn down(&mut self, side: bool) -> bool

Walk down to specified node if present and not currently at tree

false picks left and true picks right.

source§

impl<'r, TP, D> WalkMutBorrowed<'r, TP, D>
where TP: TreeProperties + 'r, D: From<WalkedDirection>,

source

pub fn path(&mut self, key: TP::Key) -> WalkMutBorrowedPath<'r, '_, TP, D>

Start iterator to walk to deepest node that is a prefix of the target key

While consuming the iterator the stack is updated with the position of the returned nodes.

When self was in a mismatching subtree (i.e. not a prefix of the target key) before the iterator won’t find anything.

source

pub fn goto_insert(&mut self, key: &TP::Key) -> Option<InsertPosition>

Walk to node where we’d have to insert key at

Returns None if tree is empty.

source§

impl<'r, TP> WalkMutBorrowed<'r, TP, WalkedDirection, ()>
where TP: TreeProperties + 'r,

source

pub fn into_iter_pre_order(self) -> IterMutBorrowedPreOrder<'r, TP>

Convert into iterator traversing depth-first pre-order

source

pub fn next_pre_order(&mut self) -> Option<&mut Node<TP>>

Tree traversal: depth-first pre-order

source

pub fn into_iter_in_order(self) -> IterMutBorrowedInOrder<'r, TP>

Convert into iterator traversing depth-first in-order

source

pub fn next_in_order(&mut self) -> Option<&mut Node<TP>>

Tree traversal: depth-first in-order

source

pub fn into_iter_post_order(self) -> IterMutBorrowedPostOrder<'r, TP>

Convert into iterator traversing depth-first post-order

source

pub fn next_post_order(&mut self) -> Option<&mut Node<TP>>

Tree traversal: depth-first post-order

source

pub fn into_iter_leafs(self) -> IterMutBorrowedLeaf<'r, TP>

Convert into iterator over all leafs

source

pub fn into_iter_full_leafs(self) -> IterMutBorrowedLeafFull<'r, TP>

Convert into iterator over all leafs and uncovered parts

source

pub fn next_leaf(&mut self) -> Option<&mut Node<TP>>

Tree traversal: depth-first in-order leaf nodes only

Auto Trait Implementations§

§

impl<'r, TP, D, A> Freeze for WalkMutBorrowed<'r, TP, D, A>

§

impl<'r, TP, D, A> RefUnwindSafe for WalkMutBorrowed<'r, TP, D, A>

§

impl<'r, TP, D = (), A = ()> !Send for WalkMutBorrowed<'r, TP, D, A>

§

impl<'r, TP, D = (), A = ()> !Sync for WalkMutBorrowed<'r, TP, D, A>

§

impl<'r, TP, D, A> Unpin for WalkMutBorrowed<'r, TP, D, A>
where D: Unpin, A: Unpin,

§

impl<'r, TP, D = (), A = ()> !UnwindSafe for WalkMutBorrowed<'r, TP, D, A>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.