pub struct TreeNode {
pub path: String,
pub is_dir: bool,
pub children: Option<Vec<TreeNode>>,
pub summary: NodeSummary,
}Expand description
目录树节点
- 节点为文件时,无子树
- 节点为目录时,有子树
Fields§
§path: String当前节点所处路径
is_dir: bool是否是目录 TODO:后续应该改为自动检测
children: Option<Vec<TreeNode>>如果是目录,那么遍历他的子节点;如果为文件,则为空
summary: NodeSummary节点总结信息
- 文件:当前文件的总结信息
- 目录:当前目录下所有文件的总结信息的加合
Implementations§
Source§impl TreeNode
为节点实现总结信息相关操作
impl TreeNode
为节点实现总结信息相关操作
Sourcepub fn upsert_summary(&mut self)
pub fn upsert_summary(&mut self)
初次调用为获取节点总结信息 重复调用为更新节点总结信息,覆盖式更新当前节点的总结信息
§Examples
use arui_core::tree::node::TreeNode;
// 初始化目录节点,无子节点
let mut folder_node = TreeNode::new("./src", true);
// 初始获取总结信息
folder_node.upsert_summary();
assert_eq!(folder_node.summary.size, 0);
assert_eq!(folder_node.summary.count, 0);
// 加入子节点
let sub_node = TreeNode::new("./src/lib.rs", false);
folder_node.children = Some(vec![sub_node]);
// 重复调用,覆盖式更新节点总结信息
folder_node.upsert_summary();
assert_eq!(folder_node.summary.size > 0, true);
assert_eq!(folder_node.summary.count > 0, true);
// 初始化文件节点
let mut file_node = TreeNode::new("./src/lib.rs", false);
file_node.upsert_summary();
assert_eq!(file_node.summary.size > 0, true);
assert_eq!(file_node.summary.count > 0, true);Trait Implementations§
Auto Trait Implementations§
impl Freeze for TreeNode
impl RefUnwindSafe for TreeNode
impl Send for TreeNode
impl Sync for TreeNode
impl Unpin for TreeNode
impl UnsafeUnpin for TreeNode
impl UnwindSafe for TreeNode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more