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
32
33
34
35
36
37
38
39
use super::DataTree;
use crate::size::Size;
#[derive(Debug, PartialEq, Eq)]
pub struct Reflection<Name, Data: Size> {
pub name: Name,
pub data: Data,
pub children: Vec<Self>,
}
impl<Name, Data: Size> From<DataTree<Name, Data>> for Reflection<Name, Data> {
fn from(source: DataTree<Name, Data>) -> Self {
let DataTree {
name,
data,
children,
} = source;
let children: Vec<_> = children.into_iter().map(Reflection::from).collect();
Reflection {
name,
data,
children,
}
}
}
impl<Name, Data: Size> DataTree<Name, Data> {
pub fn into_reflection(self) -> Reflection<Name, Data> {
self.into()
}
}