diff --git a/lib/src/merge.rs b/lib/src/merge.rs index de3631cbd..63004d7ab 100644 --- a/lib/src/merge.rs +++ b/lib/src/merge.rs @@ -170,6 +170,11 @@ impl Merge { &self.adds } + /// Returns the zeroth added value, which is guaranteed to exist. + pub fn first(&self) -> &T { + &self.adds[0] + } + /// Returns the `index`-th removed value, which is considered belonging to /// the `index`-th diff pair. pub fn get_remove(&self, index: usize) -> Option<&T> { diff --git a/lib/src/merged_tree.rs b/lib/src/merged_tree.rs index 9e8e1d069..54f0054ca 100644 --- a/lib/src/merged_tree.rs +++ b/lib/src/merged_tree.rs @@ -156,7 +156,7 @@ impl MergedTree { pub fn dir(&self) -> &RepoPath { match self { MergedTree::Legacy(tree) => tree.dir(), - MergedTree::Merge(conflict) => conflict.adds()[0].dir(), + MergedTree::Merge(conflict) => conflict.first().dir(), } } @@ -164,7 +164,7 @@ impl MergedTree { pub fn store(&self) -> &Arc { match self { MergedTree::Legacy(tree) => tree.store(), - MergedTree::Merge(trees) => trees.adds()[0].store(), + MergedTree::Merge(trees) => trees.first().store(), } } @@ -448,7 +448,7 @@ fn merge_trees(merge: &Merge) -> Result, TreeMergeError> { return Ok(Merge::resolved(tree.clone())); } - let base_tree = &merge.adds()[0]; + let base_tree = merge.first(); let store = base_tree.store(); let dir = base_tree.dir(); // Keep resolved entries in `new_tree` and conflicted entries in `conflicts` to