1use serde::{Deserialize, Serialize};
2
3#[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 }