flange_flat_tree/tree/
vec_tree.rs1use crate::navigator::Navigator;
9
10use super::subtree::subtree_impl::SubtreeImpl;
11use super::{tree_data::TreeData, Tree};
12
13pub struct VecTree<A> {
14 pub nav: Navigator,
15 pub values: Vec<A>,
16}
17
18impl<'a, A> TreeData for &'a VecTree<A> {
19 type Node = &'a A;
20
21 fn get(self, index: usize) -> Self::Node {
22 &self.values[index]
23 }
24
25 fn count(self) -> usize {
26 self.values.len()
27 }
28
29 fn get_nav(&self) -> &Navigator {
30 &self.nav
31 }
32}
33
34impl<'a, A> Tree<'a> for VecTree<A>
35where
36 A: 'a,
37{
38 type Node = &'a A;
39 type SubtreeType = SubtreeImpl<&'a VecTree<A>>;
40
41 fn at_pos(&'a self, index: usize) -> Self::SubtreeType {
42 SubtreeImpl::new(self, index)
43 }
44
45 fn get_nav(&self) -> &Navigator {
46 &self.nav
47 }
48}