diff --git a/lib/src/conflicts.rs b/lib/src/conflicts.rs index f7f2fc4cd..c460e754d 100644 --- a/lib/src/conflicts.rs +++ b/lib/src/conflicts.rs @@ -62,6 +62,11 @@ impl Conflict { Conflict::new(removes, adds) } + /// Returns the removes and adds as a pair. + pub fn take(self) -> (Vec, Vec) { + (self.removes, self.adds) + } + pub fn removes(&self) -> &[T] { &self.removes } diff --git a/lib/src/tree.rs b/lib/src/tree.rs index f83d0b2de..6096e8611 100644 --- a/lib/src/tree.rs +++ b/lib/src/tree.rs @@ -749,8 +749,9 @@ fn simplify_conflict( match term { Some(TreeValue::Conflict(id)) => { let conflict = store.read_conflict(path, id)?; - new_removes.extend_from_slice(conflict.removes()); - new_adds.extend_from_slice(conflict.adds()); + let (removes, adds) = conflict.take(); + new_removes.extend(removes); + new_adds.extend(adds); } _ => { new_adds.push(term.clone()); @@ -761,8 +762,9 @@ fn simplify_conflict( match term { Some(TreeValue::Conflict(id)) => { let conflict = store.read_conflict(path, id)?; - new_removes.extend_from_slice(conflict.adds()); - new_adds.extend_from_slice(conflict.removes()); + let (removes, adds) = conflict.take(); + new_removes.extend(adds); + new_adds.extend(removes); } _ => { new_removes.push(term.clone());