Struct UnifiedNode

Source
pub struct UnifiedNode<Data: Debug> { /* private fields */ }
Available on crate feature unified only.
Expand description

A node that is not split into separate branch and leaf nodes. This is the non-deque version, where children are represented as a linked list. In this version, a node’s previous sibling(s) and next sibling(s) are available, but nodes cannot be directly indexed, nor can children be detached, removed, or inserted by index.

Data represents the custom data associated with the the node.

§See also

For the deque version, see UnifiedNodeDeque.

For a node that is split into separate branch and leaf nodes, see SplitNode and SplitNodeDeque.

Trait Implementations§

Source§

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

Source§

type Representation = UnifiedNodeRepresentation<Data>

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

type Branch = UnifiedNode<Data>

The type used for branch nodes. Read more
Source§

type Leaf = UnifiedNode<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 UnifiedNode<Data>

Source§

type ChildrenIter<'branch> = ChildrenLinked<'branch, UnifiedNode<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>, ) -> 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>, ) -> 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>, ) -> 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>, ) -> Option<UnifiedNodeRepresentation<Data>>

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

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

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

fn push_front(token: Self::Token, arena: &mut Arena<Self>, 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>, 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 + Debug> Debug for UnifiedNode<Data>

Source§

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

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

impl<Data: Debug> Hash for UnifiedNode<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> LinkedNode for UnifiedNode<Data>

Source§

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

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

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

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

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

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

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

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

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

Source§

type Base = UnifiedNode<Data>

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

type Token = Token<UnifiedNode<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

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 UnifiedNode<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 UnifiedNode<Data>

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<Data> UnwindSafe for UnifiedNode<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.