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>
where Children::Assoc: IChildren<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>,

source

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>

source§

fn chunk(&self) -> &keyexpr

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>
where Children::Assoc: IChildren<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>,

source§

fn parent(&self) -> Option<&Self::Parent>

source§

fn keyexpr(&self) -> OwnedKeyExpr

source§

fn weight(&self) -> Option<&Weight>

source§

fn children(&self) -> &Self::Children

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>
where Children::Assoc: IChildren<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>,

source§

fn parent_mut(&mut self) -> Option<&mut Self::Parent>

source§

fn weight_mut(&mut self) -> Option<&mut Weight>

source§

fn take_weight(&mut self) -> Option<Weight>

source§

fn insert_weight(&mut self, weight: Weight) -> Option<Weight>

source§

fn children_mut(&mut self) -> &mut Self::Children

Auto Trait Implementations§

§

impl<Weight, Parent, Wildness, Children, Token> RefUnwindSafe for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
where Weight: RefUnwindSafe, <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,

§

impl<Weight, Parent, Wildness, Children, Token> Send for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
where Weight: Send, <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,

§

impl<Weight, Parent, Wildness, Children, Token> Sync for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
where Weight: Sync, <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,

§

impl<Weight, Parent, Wildness, Children, Token> Unpin for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
where Weight: Unpin, <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,

§

impl<Weight, Parent, Wildness, Children, Token> UnwindSafe for KeArcTreeNode<Weight, Parent, Wildness, Children, Token>
where Weight: UnwindSafe, <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,

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> AsNode<T> for T

source§

fn as_node(&self) -> &T

source§

impl<T> AsNodeMut<T> for T

source§

fn as_node_mut(&mut self) -> &mut T

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>,

§

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>,

§

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.