From c4ea7815f8ba54d46b4b5cb48722059a9ae9bfb8 Mon Sep 17 00:00:00 2001 From: "andy.boot" Date: Fri, 1 Jul 2022 10:22:40 +0100 Subject: [PATCH] Refactor: tweak utils function Refactor simplify_dir_names to make it more readable --- src/utils.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/utils.rs b/src/utils.rs index 47439ce..b66e165 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -7,11 +7,10 @@ use regex::Regex; pub fn simplify_dir_names>(filenames: Vec

) -> HashSet { let mut top_level_names: HashSet = HashSet::with_capacity(filenames.len()); - let mut to_remove: Vec = Vec::with_capacity(filenames.len()); - for t in filenames { let top_level_name = normalize_path(t); let mut can_add = true; + let mut to_remove: Vec = Vec::new(); for tt in top_level_names.iter() { if is_a_parent_of(&top_level_name, tt) { @@ -20,14 +19,13 @@ pub fn simplify_dir_names>(filenames: Vec

) -> HashSet can_add = false; } } - to_remove.sort_unstable(); - top_level_names.retain(|tr| to_remove.binary_search(tr).is_err()); - to_remove.clear(); + for r in to_remove { + top_level_names.remove(&r); + } if can_add { top_level_names.insert(top_level_name); } } - top_level_names } @@ -94,6 +92,7 @@ mod tests { fn test_simplify_dir_rm_subdir() { let mut correct = HashSet::new(); correct.insert(["a", "b"].iter().collect::()); + assert_eq!(simplify_dir_names(vec!["a/b/c", "a/b", "a/b/d/f"]), correct); assert_eq!(simplify_dir_names(vec!["a/b", "a/b/c", "a/b/d/f"]), correct); }