use mitoo::{TreeData, TreeUtil};
#[derive(Debug, Clone)]
struct Menu {
id: u64,
name: String,
pid: u64,
}
impl TreeData for Menu {
type Id = u64;
fn id(&self) -> Self::Id { self.id }
fn name(&self) -> &str { &self.name }
fn pid(&self) -> Self::Id { self.pid }
fn root_pid() -> Self::Id { 0 }
}
mod tests {
use super::*;
#[test]
fn test01() {
let menus = vec![
Menu {
id: 1,
name: "系统管理".to_string(),
pid: 0,
},
Menu {
id: 2,
name: "用户管理".to_string(),
pid: 1,
},
Menu {
id: 3,
name: "角色管理".to_string(),
pid: 1,
},
Menu {
id: 4,
name: "菜单管理".to_string(),
pid: 2,
},
Menu {
id: 5,
name: "数据统计".to_string(),
pid: 0,
},
];
let trees = TreeUtil::to_trees(menus);
println!("{:#?}", trees);
}
}