From accd1e337aa902aa3f8f4c2bf2644c655d58e7b4 Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Sun, 11 Aug 2024 22:47:02 +0900 Subject: [PATCH] merge: add .cloned() method that maps inner Option<&T> to Option MergedTreeVal::to_merge() will be replaced with this. --- lib/src/merge.rs | 7 +++++++ lib/src/merged_tree.rs | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/src/merge.rs b/lib/src/merge.rs index 6569f842a..8d27ec92f 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 5277db0a2..5d8d8d846 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()) } } }