Struct zenoh_keyexpr::keyexpr_tree::arc_tree::KeArcTree
source · pub struct KeArcTree<Weight, Token: TokenTrait = DefaultToken, Wildness: IWildness = bool, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>> = DefaultChildrenProvider> { /* private fields */ }Expand description
A shared KeTree.
The tree and its nodes have shared ownership, while their mutability is managed through the Token.
The (node, &token) tuple implements core::ops::Deref, while (node, &mut token) implements core::ops::DerefMut.
Implementations§
source§impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, DefaultToken>, DefaultToken>>>> KeArcTree<Weight, DefaultToken, Wildness, Children>
impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, DefaultToken>, DefaultToken>>>> KeArcTree<Weight, DefaultToken, Wildness, Children>
sourcepub fn new(
) -> Result<(Self, DefaultToken), <DefaultToken as TokenTrait>::ConstructionError>
pub fn new( ) -> Result<(Self, DefaultToken), <DefaultToken as TokenTrait>::ConstructionError>
Constructs the KeArcTree, returning it and its token, unless constructing the Token failed.
source§impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> KeArcTree<Weight, Token, Wildness, Children>
impl<Weight, Wildness: IWildness, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>, Token: TokenTrait> KeArcTree<Weight, Token, Wildness, Children>
sourcepub fn with_token(token: &Token) -> Self
pub fn with_token(token: &Token) -> Self
Constructs the KeArcTree with a specific token.
Trait Implementations§
source§impl<'a, Weight: 'a, Wildness: IWildness + 'a, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>> + 'a, Token: TokenTrait + 'a> ITokenKeyExprTree<'a, Weight, Token> for KeArcTree<Weight, Token, Wildness, Children>where
Children::Assoc: IChildren<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>,
impl<'a, Weight: 'a, Wildness: IWildness + 'a, Children: IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>> + 'a, Token: TokenTrait + 'a> ITokenKeyExprTree<'a, Weight, Token> for KeArcTree<Weight, Token, Wildness, Children>where Children::Assoc: IChildren<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>,
type Node = (&'a Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, &'a Token)
type NodeMut = (&'a Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, &'a mut Token)
fn node(&'a self, token: &'a Token, at: &keyexpr) -> Option<Self::Node>
fn node_mut( &'a self, token: &'a mut Token, at: &keyexpr ) -> Option<Self::NodeMut>
fn node_or_create(&'a self, token: &'a mut Token, at: &keyexpr) -> Self::NodeMut
type TreeIterItem = <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::Node
type TreeIter = TokenPacker<TreeIter<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a Token>
fn tree_iter(&'a self, token: &'a Token) -> Self::TreeIter
type TreeIterItemMut = Tokenized<&'a Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, &'a mut Token>
type TreeIterMut = TokenPacker<TreeIter<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a mut Token>
fn tree_iter_mut(&'a self, token: &'a mut Token) -> Self::TreeIterMut
type IntersectionItem = <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::Node
type Intersection = IterOrOption<TokenPacker<Intersection<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a Token>, <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::IntersectionItem>
fn intersecting_nodes( &'a self, token: &'a Token, key: &'a keyexpr ) -> Self::Intersection
type IntersectionItemMut = <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::TreeIterItemMut
type IntersectionMut = IterOrOption<TokenPacker<Intersection<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a mut Token>, <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::IntersectionItemMut>
fn intersecting_nodes_mut( &'a self, token: &'a mut Token, key: &'a keyexpr ) -> Self::IntersectionMut
type InclusionItem = <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::Node
type Inclusion = IterOrOption<TokenPacker<Inclusion<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a Token>, <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::InclusionItem>
fn included_nodes( &'a self, token: &'a Token, key: &'a keyexpr ) -> Self::Inclusion
type InclusionItemMut = <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::TreeIterItemMut
type InclusionMut = IterOrOption<TokenPacker<Inclusion<'a, Children, Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>, Weight>, &'a mut Token>, <KeArcTree<Weight, Token, Wildness, Children> as ITokenKeyExprTree<'a, Weight, Token>>::InclusionItemMut>
fn included_nodes_mut( &'a self, token: &'a mut Token, key: &'a keyexpr ) -> Self::InclusionMut
type PruneNode = KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>
fn prune_where<F: FnMut(&mut Self::PruneNode) -> bool>( &self, token: &mut Token, predicate: F )
Auto Trait Implementations§
impl<Weight, Token = DefaultToken, Wildness = bool, Children = KeyedSetProvider> !RefUnwindSafe for KeArcTree<Weight, Token, Wildness, Children>
impl<Weight, Token, Wildness, Children> Send for KeArcTree<Weight, Token, Wildness, Children>where Wildness: Send, <Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Send, <Token as TokenTrait>::Identifier: Send,
impl<Weight, Token, Wildness, Children> Sync for KeArcTree<Weight, Token, Wildness, Children>
impl<Weight, Token, Wildness, Children> Unpin for KeArcTree<Weight, Token, Wildness, Children>where Wildness: Unpin, <Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: Unpin, <Token as TokenTrait>::Identifier: Unpin,
impl<Weight, Token, Wildness, Children> UnwindSafe for KeArcTree<Weight, Token, Wildness, Children>where Wildness: UnwindSafe, <Children as IChildrenProvider<Arc<TokenCell<KeArcTreeNode<Weight, Weak<()>, Wildness, Children, Token>, Token>>>>::Assoc: UnwindSafe, <Token as TokenTrait>::Identifier: 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