pub enum SplitNode<BranchData: Debug, LeafData: Debug> {
Branch(Branch<BranchData, LeafData>),
Leaf(Leaf<BranchData, LeafData>),
}
Available on crate feature
split
only.Expand description
A node that is 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 branches cannot be directly indexed, nor can children 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 deque version, see SplitNodeDeque
.
For a node that isn’t split into separate branch and leaf nodes, see
UnifiedNode
and UnifiedNodeDeque
.
Variants§
Branch(Branch<BranchData, LeafData>)
A branch node that may have children.
Leaf(Leaf<BranchData, LeafData>)
A leaf node that may not have children.
Trait Implementations§
Source§impl<BranchData, LeafData> BaseNode for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> BaseNode for SplitNode<BranchData, LeafData>
Source§type Representation = SplitNodeRepresentation<BranchData, LeafData>
type Representation = SplitNodeRepresentation<BranchData, LeafData>
Source§fn into_representation(
self,
arena: &mut Arena<Self::Base>,
) -> Self::Representation
fn into_representation( self, arena: &mut Arena<Self::Base>, ) -> Self::Representation
Converts this node into its representation. Read more
Source§impl<BranchData: Debug + Debug, LeafData: Debug + Debug> Debug for SplitNode<BranchData, LeafData>
impl<BranchData: Debug + Debug, LeafData: Debug + Debug> Debug for SplitNode<BranchData, LeafData>
Source§impl<BranchData, LeafData> LinkedNode for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> LinkedNode for SplitNode<BranchData, LeafData>
Source§fn preceding_siblings<'node>(
&'node self,
arena: &'node Arena<Self::Base>,
) -> PrecedingSiblings<'node, Self> ⓘwhere
Self: Sized,
fn preceding_siblings<'node>(
&'node self,
arena: &'node Arena<Self::Base>,
) -> PrecedingSiblings<'node, Self> ⓘwhere
Self: Sized,
Source§fn following_siblings<'node>(
&'node self,
arena: &'node Arena<Self::Base>,
) -> FollowingSiblings<'node, Self> ⓘwhere
Self: Sized,
fn following_siblings<'node>(
&'node self,
arena: &'node Arena<Self::Base>,
) -> FollowingSiblings<'node, Self> ⓘwhere
Self: Sized,
Source§impl<BranchData, LeafData> Node for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> Node for SplitNode<BranchData, LeafData>
Source§type Token = SplitToken<BranchData, LeafData>
type Token = SplitToken<BranchData, LeafData>
The token associated with this type of node.
Source§type DataRef<'data> = SplitData<&'data BranchData, &'data LeafData>
where
Self: 'data
type DataRef<'data> = SplitData<&'data BranchData, &'data LeafData> where Self: 'data
Source§type DataRefMut<'data> = SplitData<&'data mut BranchData, &'data mut LeafData>
where
Self: 'data
type DataRefMut<'data> = SplitData<&'data mut BranchData, &'data mut LeafData> where Self: 'data
Source§fn data(&self) -> Self::DataRef<'_>
fn data(&self) -> Self::DataRef<'_>
Returns a reference to the data associated with this node.
Source§fn data_mut(&mut self) -> Self::DataRefMut<'_>
fn data_mut(&mut self) -> Self::DataRefMut<'_>
Returns a mutable reference to the data associated with this node.
Source§impl<BranchData, LeafData> NodeToken<SplitNode<BranchData, LeafData>> for SplitToken<BranchData, LeafData>
impl<BranchData, LeafData> NodeToken<SplitNode<BranchData, LeafData>> for SplitToken<BranchData, LeafData>
Source§fn parent(
&self,
arena: &Arena<N::Base>,
) -> Option<<<N::Base as BaseNode>::Branch as Node>::Token>
fn parent( &self, arena: &Arena<N::Base>, ) -> Option<<<N::Base as BaseNode>::Branch as Node>::Token>
Source§fn ancestors<'arena>(
&self,
arena: &'arena Arena<N::Base>,
) -> Ancestors<'arena, N::Base> ⓘ
fn ancestors<'arena>( &self, arena: &'arena Arena<N::Base>, ) -> Ancestors<'arena, N::Base> ⓘ
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,
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,
Source§fn prev(&self, arena: &Arena<N::Base>) -> Option<<N::Base as Node>::Token>where
N::Base: LinkedNode,
fn prev(&self, arena: &Arena<N::Base>) -> Option<<N::Base as Node>::Token>where
N::Base: LinkedNode,
Source§fn next(&self, arena: &Arena<N::Base>) -> Option<<N::Base as Node>::Token>where
N::Base: LinkedNode,
fn next(&self, arena: &Arena<N::Base>) -> Option<<N::Base as Node>::Token>where
N::Base: LinkedNode,
Source§fn preceding_siblings<'arena>(
&self,
arena: &'arena Arena<N::Base>,
) -> PrecedingSiblings<'arena, N> ⓘwhere
N::Base: LinkedNode,
fn preceding_siblings<'arena>(
&self,
arena: &'arena Arena<N::Base>,
) -> PrecedingSiblings<'arena, N> ⓘwhere
N::Base: LinkedNode,
Source§fn following_siblings<'arena>(
&self,
arena: &'arena Arena<N::Base>,
) -> FollowingSiblings<'arena, N> ⓘwhere
N::Base: LinkedNode,
fn following_siblings<'arena>(
&self,
arena: &'arena Arena<N::Base>,
) -> FollowingSiblings<'arena, N> ⓘwhere
N::Base: LinkedNode,
Source§impl<'node, BranchData, LeafData> TryFrom<&'node SplitNode<BranchData, LeafData>> for &'node Branch<BranchData, LeafData>
impl<'node, BranchData, LeafData> TryFrom<&'node SplitNode<BranchData, LeafData>> for &'node Branch<BranchData, LeafData>
Source§impl<'node, BranchData, LeafData> TryFrom<&'node SplitNode<BranchData, LeafData>> for &'node Leaf<BranchData, LeafData>
impl<'node, BranchData, LeafData> TryFrom<&'node SplitNode<BranchData, LeafData>> for &'node Leaf<BranchData, LeafData>
Source§impl<'node, BranchData, LeafData> TryFrom<&'node mut SplitNode<BranchData, LeafData>> for &'node mut Branch<BranchData, LeafData>
impl<'node, BranchData, LeafData> TryFrom<&'node mut SplitNode<BranchData, LeafData>> for &'node mut Branch<BranchData, LeafData>
Auto Trait Implementations§
impl<BranchData, LeafData> Freeze for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> RefUnwindSafe for SplitNode<BranchData, LeafData>where
BranchData: RefUnwindSafe,
LeafData: RefUnwindSafe,
impl<BranchData, LeafData> Send for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> Sync for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> Unpin for SplitNode<BranchData, LeafData>
impl<BranchData, LeafData> UnwindSafe for SplitNode<BranchData, LeafData>where
BranchData: UnwindSafe,
LeafData: 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