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