From 731549ac1d08df6c956be672353e11c4aac1716f Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 5 Apr 2021 11:53:29 +0200 Subject: Add AsyncDag::load() Signed-off-by: Matthias Beyer --- src/async_dag.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/async_dag.rs b/src/async_dag.rs index 0da6e2c..88a839e 100644 --- a/src/async_dag.rs +++ b/src/async_dag.rs @@ -47,6 +47,24 @@ impl AsyncDag }) } + /// Load a AsyncDag object using `head` as HEAD node. + /// + /// # Warning + /// + /// This fails if backend.get(head) fails. + pub async fn load(backend: Backend, head: Id) -> Result { + backend.get(head) + .await? + .map(|(id, _)| { + AsyncDag { + head: id, + backend: backend, + _node: std::marker::PhantomData, + } + }) + .ok_or_else(|| anyhow!("Node not found")) + } + /// Check whether an `id` is in the DAG. pub async fn has_id(&self, id: &Id) -> Result { self.stream() -- cgit v1.2.3