orx_tree/subtrees/
tree_as_subtree.rs

1use super::subtree::sealed::SubTreeCore;
2use crate::{
3    Dfs, MemoryPolicy, Tree, TreeVariant,
4    node_ref::NodeRefCore,
5    pinned_storage::PinnedStorage,
6    traversal::{over::OverDepthData, traverser_core::TraverserCore},
7};
8use orx_selfref_col::NodePtr;
9
10impl<V, M, P> SubTreeCore<V> for Tree<V, M, P>
11where
12    V: TreeVariant,
13    M: MemoryPolicy,
14    P: PinnedStorage,
15{
16    fn root_ptr(&self) -> NodePtr<V> {
17        self.root().node_ptr().clone()
18    }
19
20    fn root_parent_ptr(&self) -> Option<NodePtr<V>> {
21        None
22    }
23
24    fn root_sibling_idx(&self) -> usize {
25        0
26    }
27
28    fn create_subtree(&mut self) -> impl IntoIterator<Item = (usize, <V>::Item)> {
29        let root = self.root_mut();
30        Dfs::<OverDepthData>::into_iter_with_owned_storage(root)
31    }
32}