From ca3f549c9e58fc2893a37b5a9c4e0ad6579d049a Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Mon, 20 Nov 2023 15:39:46 +0900 Subject: [PATCH] merged_tree: remove redundant clone() from ConflictIterator construction --- lib/src/merged_tree.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/src/merged_tree.rs b/lib/src/merged_tree.rs index 43df1531a..4f078792a 100644 --- a/lib/src/merged_tree.rs +++ b/lib/src/merged_tree.rs @@ -208,7 +208,7 @@ impl MergedTree { /// conflict, not one for each path in the tree. // TODO: Restrict this by a matcher (or add a separate method for that). pub fn conflicts(&self) -> impl Iterator { - ConflictIterator::new(self.clone()) + ConflictIterator::new(self) } /// Whether this tree has conflicts. @@ -613,11 +613,11 @@ struct ConflictsDirItem { entries: Vec<(RepoPath, MergedTreeValue)>, } -impl From for ConflictsDirItem { - fn from(merged_tree: MergedTree) -> Self { +impl From<&MergedTree> for ConflictsDirItem { + fn from(merged_tree: &MergedTree) -> Self { let dir = merged_tree.dir(); - let basename_iter: Box> = match &merged_tree { + let basename_iter: Box> = match merged_tree { MergedTree::Legacy(tree) => Box::new( tree.entries_non_recursive() .filter(|entry| matches!(entry.value(), &TreeValue::Conflict(_))) @@ -657,7 +657,7 @@ enum ConflictIterator { } impl ConflictIterator { - fn new(tree: MergedTree) -> Self { + fn new(tree: &MergedTree) -> Self { match tree { MergedTree::Legacy(tree) => ConflictIterator::Legacy { store: tree.store().clone(), @@ -694,7 +694,7 @@ impl Iterator for ConflictIterator { // TODO: propagate errors if let Some(trees) = tree_values.to_tree_merge(store, &path).unwrap() { // If all sides are trees or missing, descend into the merged tree - stack.push(ConflictsDirItem::from(MergedTree::Merge(trees))); + stack.push(ConflictsDirItem::from(&MergedTree::Merge(trees))); } else { // Otherwise this is a conflict between files, trees, etc. If they could // be automatically resolved, they should have been when the top-level