From 941f41e62ebcd1e09bc6b364c1fd25c7da107907 Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Thu, 1 Jun 2023 10:39:56 +0900 Subject: [PATCH] tree_builder: initialize base trees with the root entry This helps to rewrite populate_trees() as recursive function call. --- lib/src/tree_builder.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/src/tree_builder.rs b/lib/src/tree_builder.rs index 1ced009cb..3e51d9ec3 100644 --- a/lib/src/tree_builder.rs +++ b/lib/src/tree_builder.rs @@ -115,17 +115,15 @@ impl TreeBuilder { } fn get_base_trees(&self) -> BTreeMap { - let mut tree_cache = BTreeMap::new(); let store = self.store.clone(); + let mut tree_cache = { + let dir = RepoPath::root(); + let tree = store.get_tree(&dir, &self.base_tree_id).unwrap(); + BTreeMap::from([(dir, tree)]) + }; let mut populate_trees = |dir: &RepoPath| { let mut current_dir = RepoPath::root(); - - if !tree_cache.contains_key(¤t_dir) { - let tree = store.get_tree(¤t_dir, &self.base_tree_id).unwrap(); - tree_cache.insert(current_dir.clone(), tree); - } - for component in dir.components() { let next_dir = current_dir.join(component); let current_tree = tree_cache.get(¤t_dir).unwrap();