From 04c4963a02c51995aa846ce629ca15ffe3124d73 Mon Sep 17 00:00:00 2001 From: "andy.boot" Date: Wed, 4 Jan 2023 23:47:02 +0000 Subject: [PATCH] refactor filter.rs --- src/filter.rs | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/filter.rs b/src/filter.rs index 70b2f53..dda0f71 100644 --- a/src/filter.rs +++ b/src/filter.rs @@ -19,14 +19,24 @@ pub fn get_biggest( } let mut heap = BinaryHeap::new(); let number_top_level_nodes = top_level_nodes.len(); - - let root = get_new_root(top_level_nodes); + let root; if number_top_level_nodes > 1 { + let size = top_level_nodes.iter().map(|node| node.size).sum(); + root = Node { + name: PathBuf::from("(total)"), + size, + children: top_level_nodes, + inode_device: None, + depth: 0, + }; + // Always include the base nodes if we add a 'parent' (total) node heap = add_children(using_a_filter, min_size, only_dir, &root, usize::MAX, heap); } else { + root = top_level_nodes.into_iter().next().unwrap(); heap = add_children(using_a_filter, min_size, only_dir, &root, depth, heap); } + let remaining = n.checked_sub(number_top_level_nodes).unwrap_or(0); fill_remaining_lines( heap, @@ -87,21 +97,6 @@ fn add_children<'a>( heap } -fn get_new_root(top_level_nodes: Vec) -> Node { - if top_level_nodes.len() != 1 { - let size = top_level_nodes.iter().map(|node| node.size).sum(); - Node { - name: PathBuf::from("(total)"), - size, - children: top_level_nodes, - inode_device: None, - depth: 0, - } - } else { - top_level_nodes.into_iter().next().unwrap() - } -} - fn recursive_rebuilder(allowed_nodes: &HashSet<&Path>, current: &Node) -> Option { let mut new_children: Vec<_> = current .children