Struct UnifiedNodeDeque

Source
pub struct UnifiedNodeDeque<Data: Debug> { /* private fields */ }
Available on crate features deque and unified only.
Expand description

A node that is not split into separate branch and leaf nodes.

This is the deque version, where children are represented as a VecDeque. In this version, a node’s previous sibling(s) and next sibling(s) are not available, but nodes can be directly indexed, and children can be detached, removed, or inserted by index.

Data represents the custom data associated with the node.

§See also

For the non-deque version, see UnifiedNode. For a node that is split into separate branch and leaf nodes, see SplitNode and SplitNodeDeque.

Trait Implementations§

Source§

impl<Data: Debug> BaseNode for UnifiedNodeDeque<Data>

Source§

type Representation = UnifiedNodeRepresentation<Data>

The representation of the node after it is removed from the arena. Read more
Source§

type Branch = UnifiedNodeDeque<Data>

The type used for branch nodes. Read more
Source§

type Leaf = UnifiedNodeDeque<Data>

The type used for leaf nodes. Read more
Source§

fn into_representation(self, arena: &mut Arena<Self>) -> Self::Representation

Converts this node into its representation. Read more
Source§

impl<Data: Debug> BranchNode for UnifiedNodeDeque<Data>

Source§

type ChildrenIter<'branch> = Copied<Iter<'branch, Token<UnifiedNodeDeque<Data>>>> where Self: 'branch

The iterator returned by children.
Source§

fn first(&self) -> Option<Token<Self>>

Returns the token of this branch node’s first child. Read more
Source§

fn last(&self) -> Option<Token<Self>>

Returns the token of this branch node’s last child. Read more
Source§

fn children<'branch>( &'branch self, _arena: &'branch Arena<Self::Base>, ) -> Self::ChildrenIter<'branch>

Returns an iterator over the tokens of this branch node’s children.
Source§

fn is_empty(&self) -> bool

Returns whether this branch node has no children.
Source§

fn detach_front( token: Self::Token, arena: &mut Arena<Self::Base>, ) -> Option<Token<Self>>

Detaches this branch node’s first child, returning its token. Read more
Source§

fn detach_back( token: Self::Token, arena: &mut Arena<Self::Base>, ) -> Option<Token<Self>>

Detaches this branch node’s last child, returning its token. Read more
Source§

fn pop_front( token: Self::Token, arena: &mut Arena<Self::Base>, ) -> Option<UnifiedNodeRepresentation<Data>>

Removes this branch node’s first child. Read more
Source§

fn pop_back( token: Self::Token, arena: &mut Arena<Self::Base>, ) -> Option<UnifiedNodeRepresentation<Data>>

Removes this branch node’s last child. Read more
Source§

fn push_front( token: Self::Token, arena: &mut Arena<Self::Base>, new: Token<Self>, )

Pushes the given new token’s node to the beginning of this branch node’s children. Read more
Source§

fn push_back( token: Self::Token, arena: &mut Arena<Self::Base>, new: Token<Self>, )

Pushes the given new token’s node to the end of this branch node’s children. Read more
Source§

fn descendants<'branch>( &'branch self, arena: &'branch Arena<Self::Base>, ) -> Descendants<'branch, Self>
where Self: Sized, for<'base> &'base Self: TryFrom<&'base Self::Base>,

Returns an iterator over the tokens of this branch node’s descendants. Read more
Source§

impl<Data: Debug> BranchNodeDeque for UnifiedNodeDeque<Data>

Source§

fn len(&self) -> usize

Returns the number of children this branch node has.
Source§

fn detach( token: Self::Token, arena: &mut Arena<Self>, index: usize, ) -> Token<Self>

Detaches the child at the given index, returning its token. Read more
Source§

fn remove( token: Self::Token, arena: &mut Arena<Self>, index: usize, ) -> UnifiedNodeRepresentation<Data>

Removes the child at the given index. Read more
Source§

fn insert( token: Self::Token, arena: &mut Arena<Self>, index: usize, new: Token<Self>, )

Inserts the given new token’s node at the given index. Read more
Source§

fn get(&self, index: usize) -> Option<<Self::Base as Node>::Token>

Returns the token of the child at the given index. Read more
Source§

impl<Data: Debug + Debug> Debug for UnifiedNodeDeque<Data>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Data: Debug> Hash for UnifiedNodeDeque<Data>

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<Data: Debug> Index<usize> for UnifiedNodeDeque<Data>

Source§

type Output = Token<UnifiedNodeDeque<Data>>

The returned type after indexing.
Source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<Data: Debug> Node for UnifiedNodeDeque<Data>

Source§

type Base = UnifiedNodeDeque<Data>

The ‘base node’ used in the arena. Read more
Source§

type Token = Token<UnifiedNodeDeque<Data>>

The token associated with this type of node.
Source§

type Data = Data

The custom data associated with this node.
Source§

type DataRef<'data> = &'data Data where Self: 'data

A type acting as a reference to the node’s data. Read more
Source§

type DataRefMut<'data> = &'data mut Data where Self: 'data

A type acting as a mutable reference to the node’s data. Read more
Source§

fn new(arena: &mut Arena<Self::Base>, data: Self::Data) -> Self::Token
where Self: Sized,

Creates a new node allocated in the given arena using the given data. Read more
Source§

fn token(&self) -> Self::Token

Returns this node’s token.
Source§

fn parent(&self) -> Option<Token<Self>>

Returns the token of this node’s parent. Read more
Source§

fn data(&self) -> &Self::Data

Returns a reference to the data associated with this node.
Source§

fn data_mut(&mut self) -> &mut Self::Data

Returns a mutable reference to the data associated with this node.
Source§

fn ancestors<'node>( &'node self, arena: &'node Arena<Self::Base>, ) -> Ancestors<'node, Self::Base>
where Self: Sized,

Returns an iterator over the tokens of this node’s ancestors. Read more
Source§

fn root<'node>(&'node self, arena: &'node Arena<Self::Base>) -> RootToken<Self>
where Self: Sized,

Returns this node’s root node. Read more
Source§

impl<Data: Debug> PartialEq for UnifiedNodeDeque<Data>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<Data: Debug> Eq for UnifiedNodeDeque<Data>

Auto Trait Implementations§

§

impl<Data> Freeze for UnifiedNodeDeque<Data>
where Data: Freeze,

§

impl<Data> RefUnwindSafe for UnifiedNodeDeque<Data>
where Data: RefUnwindSafe,

§

impl<Data> Send for UnifiedNodeDeque<Data>
where Data: Send,

§

impl<Data> Sync for UnifiedNodeDeque<Data>
where Data: Sync,

§

impl<Data> Unpin for UnifiedNodeDeque<Data>
where Data: Unpin,

§

impl<Data> UnwindSafe for UnifiedNodeDeque<Data>
where Data: UnwindSafe,

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.