diff --git a/lib/src/merge.rs b/lib/src/merge.rs index 6569f842a7..8d27ec92fa 100644 --- a/lib/src/merge.rs +++ b/lib/src/merge.rs @@ -464,6 +464,13 @@ impl Merge> { } } +impl Merge> { + /// Creates a new merge by cloning inner `Option<&T>`s. + pub fn cloned(&self) -> Merge> { + self.map(|value| value.cloned()) + } +} + impl Merge> { /// Flattens a nested merge into a regular merge. /// diff --git a/lib/src/merged_tree.rs b/lib/src/merged_tree.rs index 5277db0a23..5d8d8d846f 100644 --- a/lib/src/merged_tree.rs +++ b/lib/src/merged_tree.rs @@ -381,7 +381,7 @@ fn all_tree_entries( let iter = all_merged_tree_entries(trees).map(|(name, values)| { let value = match values.resolve_trivial() { Some(resolved) => MergedTreeVal::Resolved(*resolved), - None => MergedTreeVal::Conflict(values.map(|value| value.cloned())), + None => MergedTreeVal::Conflict(values.cloned()), }; (name, value) }); @@ -441,7 +441,7 @@ fn trees_value<'a>(trees: &'a Merge, basename: &RepoPathComponent) -> Merg if let Some(resolved) = value.resolve_trivial() { return MergedTreeVal::Resolved(*resolved); } - MergedTreeVal::Conflict(value.map(|x| x.cloned())) + MergedTreeVal::Conflict(value.cloned()) } /// The returned conflict will either be resolved or have the same number of @@ -522,7 +522,7 @@ fn merge_tree_values( Ok(Merge::normal(resolved)) } else { // Failed to merge the files, or the paths are not files - Ok(values.map(|value| value.cloned())) + Ok(values.cloned()) } } }