parallel_disk_usage/data_tree/
constructors.rs1use super::DataTree;
2use crate::size;
3
4impl<Name, Size: size::Size> DataTree<Name, Size> {
5 pub fn dir(name: Name, inode_size: Size, children: Vec<Self>, depth: u64) -> Self {
7 let size = inode_size + children.iter().map(DataTree::size).sum();
8 let children = if depth > 0 { children } else { Vec::new() };
9 DataTree {
10 name,
11 size,
12 children,
13 }
14 }
15
16 pub fn file(name: Name, size: Size) -> Self {
18 DataTree {
19 name,
20 size,
21 children: Vec::new(),
22 }
23 }
24
25 pub fn fixed_size_dir_constructor(inode_size: Size) -> impl Fn(Name, Vec<Self>) -> Self
27 where
28 Size: Copy,
29 {
30 move |name, children| DataTree::dir(name, inode_size, children, 1)
31 }
32}