pub struct KeArcTreeNode<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> { /* private fields */ }
Implementations§
Source§impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>
impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>
Sourcepub fn is_zombie(&self) -> bool
pub fn is_zombie(&self) -> bool
Under specific circumstances, a node that’s been cloned from a tree might have a destroyed parent.
Such a node is “zombified”, and becomes unable to perform certain operations such as navigating its parents,
which may be necessary for operations such as IKeyExprTreeNode::keyexpr
.
To become zombified, a node and its parents must both have been pruned from the tree that constructed them, while at least one of the parents has also been dropped everywhere it was aliased through Arc
.
Trait Implementations§
Source§impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> HasChunk for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> HasChunk for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
Source§impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> IKeyExprTreeNode<Weight> for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> IKeyExprTreeNode<Weight> for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
Source§impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> IKeyExprTreeNodeMut<Weight> for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
impl<Weight, Parent: IArcProvider, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> IKeyExprTreeNodeMut<Weight> for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
Source§fn parent_mut(&mut self) -> Option<&mut Self::Parent>
fn parent_mut(&mut self) -> Option<&mut Self::Parent>
Mutably access the parent node if it exists (the node isn’t the first chunk of a key-expression).
Source§fn weight_mut(&mut self) -> Option<&mut Weight>
fn weight_mut(&mut self) -> Option<&mut Weight>
Mutably access the node’s weight.
Source§fn take_weight(&mut self) -> Option<Weight>
fn take_weight(&mut self) -> Option<Weight>
Remove the node’s weight.
Source§fn insert_weight(&mut self, weight: Weight) -> Option<Weight>
fn insert_weight(&mut self, weight: Weight) -> Option<Weight>
Assign a weight to the node, returning the previous weight if the node had one.
Source§fn children_mut(&mut self) -> &mut Self::Children
fn children_mut(&mut self) -> &mut Self::Children
Mutably access the node’s children.
Auto Trait Implementations§
impl<Weight, Parent, Wildness, Children, Token> Freeze for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Freeze,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: Freeze,
Weight: Freeze,
impl<Weight, Parent, Wildness, Children, Token> RefUnwindSafe for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: RefUnwindSafe,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: RefUnwindSafe,
Weight: RefUnwindSafe,
impl<Weight, Parent, Wildness, Children, Token> Send for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Send,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: Send,
Weight: Send,
impl<Weight, Parent, Wildness, Children, Token> Sync for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Sync,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: Sync,
Weight: Sync,
impl<Weight, Parent, Wildness, Children, Token> Unpin for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Unpin,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: Unpin,
Weight: Unpin,
impl<Weight, Parent, Wildness, Children, Token> UnwindSafe for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>where
<Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: UnwindSafe,
<Parent as IArcProvider>::Ptr<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>: UnwindSafe,
Weight: 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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more