Enum SplitNodeDeque

Source
pub enum SplitNodeDeque<BranchData: Debug, LeafData: Debug> {
    Branch(BranchDeque<BranchData, LeafData>),
    Leaf(LeafDeque<BranchData, LeafData>),
}
Available on crate features deque and split only.
Expand description

A node that is 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 branches can be directly indexed, and children can be detached, removed, or inserted by index.

BranchData represents the custom data associated with branches, while LeafData represents the custom data associated with leaves.

§See also

For the non-deque version, see SplitNode. For a node that isn’t split into separate branch and leaf nodes, see UnifiedNode and UnifiedNodeDeque.

Variants§

§

Branch(BranchDeque<BranchData, LeafData>)

§

Leaf(LeafDeque<BranchData, LeafData>)

Trait Implementations§

Source§

impl<BranchData, LeafData> BaseNode for SplitNodeDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Representation = SplitNodeRepresentation<BranchData, LeafData>

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

type Branch = BranchDeque<BranchData, LeafData>

The type used for branch nodes. Read more
Source§

type Leaf = LeafDeque<BranchData, LeafData>

The type used for leaf nodes. Read more
Source§

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

Converts this node into its representation. Read more
Source§

impl<BranchData: Debug + Debug, LeafData: Debug + Debug> Debug for SplitNodeDeque<BranchData, LeafData>

Source§

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

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

impl<BranchData, LeafData> Node for SplitNodeDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Base = SplitNodeDeque<BranchData, LeafData>

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

type Token = SplitTokenDeque<BranchData, LeafData>

The token associated with this type of node.
Source§

type Data = SplitData<BranchData, LeafData>

The custom data associated with this node.
Source§

type DataRef<'data> = SplitData<&'data BranchData, &'data LeafData> where Self: 'data

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

type DataRefMut<'data> = SplitData<&'data mut BranchData, &'data mut LeafData> where Self: 'data

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

fn new(arena: &mut Arena<Self>, 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<<<Self::Base as BaseNode>::Branch as Node>::Token>

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

fn data(&self) -> Self::DataRef<'_>

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

fn data_mut(&mut self) -> Self::DataRefMut<'_>

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<BranchData, LeafData> NodeToken<SplitNodeDeque<BranchData, LeafData>> for SplitTokenDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

fn parent( &self, arena: &Arena<N::Base>, ) -> Option<<<N::Base as BaseNode>::Branch as Node>::Token>

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

fn ancestors<'arena>( &self, arena: &'arena Arena<N::Base>, ) -> Ancestors<'arena, N::Base>

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

fn root<'arena>(&self, arena: &'arena Arena<N::Base>) -> RootToken<N>
where for<'base> &'base N: TryFrom<&'base N::Base>, for<'base> <&'base N as TryFrom<&'base N::Base>>::Error: Debug,

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

fn data<'arena>(&self, arena: &'arena Arena<N::Base>) -> N::DataRef<'arena>
where for<'base> &'base N: TryFrom<&'base N::Base>, for<'base> <&'base N as TryFrom<&'base N::Base>>::Error: Debug,

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

fn data_mut<'arena>( &self, arena: &'arena mut Arena<N::Base>, ) -> N::DataRefMut<'arena>
where for<'base> &'base mut N: TryFrom<&'base mut N::Base>, for<'base> <&'base mut N as TryFrom<&'base mut N::Base>>::Error: Debug,

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

impl<'node, BranchData, LeafData> TryFrom<&'node SplitNodeDeque<BranchData, LeafData>> for &'node BranchDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Error = &'node SplitNodeDeque<BranchData, LeafData>

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

fn try_from( node: &'node SplitNodeDeque<BranchData, LeafData>, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'node, BranchData, LeafData> TryFrom<&'node SplitNodeDeque<BranchData, LeafData>> for &'node LeafDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Error = &'node SplitNodeDeque<BranchData, LeafData>

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

fn try_from( node: &'node SplitNodeDeque<BranchData, LeafData>, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'node, BranchData, LeafData> TryFrom<&'node mut SplitNodeDeque<BranchData, LeafData>> for &'node mut BranchDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Error = &'node mut SplitNodeDeque<BranchData, LeafData>

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

fn try_from( node: &'node mut SplitNodeDeque<BranchData, LeafData>, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'node, BranchData, LeafData> TryFrom<&'node mut SplitNodeDeque<BranchData, LeafData>> for &'node mut LeafDeque<BranchData, LeafData>
where BranchData: Debug, LeafData: Debug,

Source§

type Error = &'node mut SplitNodeDeque<BranchData, LeafData>

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

fn try_from( node: &'node mut SplitNodeDeque<BranchData, LeafData>, ) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<BranchData, LeafData> Freeze for SplitNodeDeque<BranchData, LeafData>
where BranchData: Freeze, LeafData: Freeze,

§

impl<BranchData, LeafData> RefUnwindSafe for SplitNodeDeque<BranchData, LeafData>
where BranchData: RefUnwindSafe, LeafData: RefUnwindSafe,

§

impl<BranchData, LeafData> Send for SplitNodeDeque<BranchData, LeafData>
where BranchData: Send, LeafData: Send,

§

impl<BranchData, LeafData> Sync for SplitNodeDeque<BranchData, LeafData>
where BranchData: Sync, LeafData: Sync,

§

impl<BranchData, LeafData> Unpin for SplitNodeDeque<BranchData, LeafData>
where BranchData: Unpin, LeafData: Unpin,

§

impl<BranchData, LeafData> UnwindSafe for SplitNodeDeque<BranchData, LeafData>
where BranchData: UnwindSafe, LeafData: 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.