From 359be3143008faed4bc2d467b5c2a4e62bc6bfdc Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sun, 4 Apr 2021 14:31:46 +0200 Subject: Merging should be possible without consuming the merged DAG Signed-off-by: Matthias Beyer --- src/async_dag.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/async_dag.rs b/src/async_dag.rs index 78886e3..20a3239 100644 --- a/src/async_dag.rs +++ b/src/async_dag.rs @@ -126,10 +126,10 @@ impl AsyncDag /// /// Use the `merger` function to merge the two head IDs and generate a new Node instance for /// the new HEAD of `self`. - pub async fn merge(&mut self, other: AsyncDag, merger: M) -> Result + pub async fn merge(&mut self, other: &AsyncDag, merger: M) -> Result where M: Merger { - let node = merger.create_merge_node(self.head.clone(), other.head)?; + let node = merger.create_merge_node(&self.head, &other.head)?; let id = self.backend.put(node).await?; self.head = id.clone(); Ok(id) @@ -140,7 +140,7 @@ pub trait Merger where Id: NodeId, N: Node { - fn create_merge_node(&self, left_id: Id, right_id: Id) -> Result; + fn create_merge_node(&self, left_id: &Id, right_id: &Id) -> Result; } @@ -425,16 +425,16 @@ mod tests { struct M; impl super::Merger for M { - fn create_merge_node(&self, left_id: test::Id, right_id: test::Id) -> Result { + fn create_merge_node(&self, left_id: &test::Id, right_id: &test::Id) -> Result { Ok(test::Node { id: test::Id(3), - parents: vec![left_id, right_id], + parents: vec![left_id.clone(), right_id.clone()], data: 45, }) } } - let merge = tokio_test::block_on(dag.merge(branched, M)); + let merge = tokio_test::block_on(dag.merge(&branched, M)); assert!(merge.is_ok()); let merge = merge.unwrap(); -- cgit v1.2.3