mirror of
https://github.com/bootandy/dust.git
synced 2025-12-12 15:49:58 -08:00
refactor filter.rs
This commit is contained in:
@@ -19,14 +19,24 @@ pub fn get_biggest(
|
|||||||
}
|
}
|
||||||
let mut heap = BinaryHeap::new();
|
let mut heap = BinaryHeap::new();
|
||||||
let number_top_level_nodes = top_level_nodes.len();
|
let number_top_level_nodes = top_level_nodes.len();
|
||||||
|
let root;
|
||||||
let root = get_new_root(top_level_nodes);
|
|
||||||
|
|
||||||
if number_top_level_nodes > 1 {
|
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);
|
heap = add_children(using_a_filter, min_size, only_dir, &root, usize::MAX, heap);
|
||||||
} else {
|
} else {
|
||||||
|
root = top_level_nodes.into_iter().next().unwrap();
|
||||||
heap = add_children(using_a_filter, min_size, only_dir, &root, depth, heap);
|
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);
|
let remaining = n.checked_sub(number_top_level_nodes).unwrap_or(0);
|
||||||
fill_remaining_lines(
|
fill_remaining_lines(
|
||||||
heap,
|
heap,
|
||||||
@@ -87,21 +97,6 @@ fn add_children<'a>(
|
|||||||
heap
|
heap
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_new_root(top_level_nodes: Vec<Node>) -> 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<DisplayNode> {
|
fn recursive_rebuilder(allowed_nodes: &HashSet<&Path>, current: &Node) -> Option<DisplayNode> {
|
||||||
let mut new_children: Vec<_> = current
|
let mut new_children: Vec<_> = current
|
||||||
.children
|
.children
|
||||||
|
|||||||
Reference in New Issue
Block a user