1use log_tree::LogTree;
2
3struct Tree {
4 key: String,
5 childs: Vec<Tree>,
6}
7macro_rules! t {
8 ($key:tt, $($childs:expr),*) => {
9 Tree { key: stringify!($key).to_string(), childs: vec![$($childs),*] }
10 };
11}
12
13impl LogTree for Tree {
14 fn add_node(&self, _: u8) -> Option<(String, log_tree::Childs<Self>)> {
15 Some((self.key.clone(), Box::new(&self.childs)))
16 }
17}
18
19fn main() {
20 let tree = t!(
21 A1,
22 t!(B1, t!(C1,), t!(C2,)),
23 t!(B2, t!(C1, t!(D1,), t!(D2,)))
24 );
25 println!("{}", tree.fmt_tree());
26}