parallel_disk_usage/data_tree/
constructors.rs

1use super::DataTree;
2use crate::size;
3
4impl<Name, Size: size::Size> DataTree<Name, Size> {
5    /// Create a tree representation of a directory.
6    pub fn dir(name: Name, inode_size: Size, children: Vec<Self>) -> Self {
7        let size = inode_size + children.iter().map(DataTree::size).sum();
8        DataTree {
9            name,
10            size,
11            children,
12        }
13    }
14
15    /// Create a tree representation of a file.
16    pub fn file(name: Name, size: Size) -> Self {
17        DataTree {
18            name,
19            size,
20            children: Vec::with_capacity(0),
21        }
22    }
23
24    /// Create a directory constructor of fixed inode size.
25    pub fn fixed_size_dir_constructor(inode_size: Size) -> impl Fn(Name, Vec<Self>) -> Self
26    where
27        Size: Copy,
28    {
29        move |name, children| DataTree::dir(name, inode_size, children)
30    }
31}