Skip to main content

heft_format/
tree.rs

1use serde::{Deserialize, Serialize};
2
3/// A node in the aggregated directory tree, ready for JSON export.
4#[derive(Debug, Serialize, Deserialize)]
5pub struct TreeNode {
6    pub name: String,
7    pub size_apparent: u64,
8    pub size_actual: u64,
9    pub mtime: u64,
10    pub count: u64,
11    #[serde(default, skip_serializing_if = "is_one")]
12    pub nlink: u64,
13    #[serde(default, skip_serializing_if = "is_zero")]
14    pub dev: u64,
15    #[serde(default, skip_serializing_if = "is_zero")]
16    pub ino: u64,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub children: Option<Vec<TreeNode>>,
19}
20
21fn is_zero(v: &u64) -> bool { *v == 0 }
22fn is_one(v: &u64) -> bool { *v <= 1 }