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()
}
}