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
use std::fmt;
use super::{Dom, DomInner};
impl fmt::Debug for Dom {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.inner.try_borrow() {
Ok(inner) => f
.debug_struct("Dom")
.field("root", &inner.root)
.field("nodes", &ViewTree(&inner))
.finish(),
Err(_) => f.debug_struct("Dom (Locked)").finish(),
}
}
}
struct ViewTree<'a>(&'a DomInner);
impl<'a> fmt::Debug for ViewTree<'a> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let dom = &self.0;
let iter = dom.nodes.iter().map(|(id, node)| {
format!("{id:?}: {:?}, children: {:?}", &node.widget, &node.children)
});
f.debug_list().entries(iter).finish()
}
}