From 44121516fc0bfa1a18d18a6ed1d1f54fe732cea6 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Mon, 19 Sep 2022 15:49:39 -0400 Subject: [PATCH] Implement Iterator for missing --- src/dag/iter.rs | 18 +++++++++++++++++- src/dag/mod.rs | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/dag/iter.rs b/src/dag/iter.rs index 8748a5f..eca4f27 100644 --- a/src/dag/iter.rs +++ b/src/dag/iter.rs @@ -39,7 +39,7 @@ where } /// Returns the next set of missing [nodes](Node) in the iterator. - pub fn next(&mut self) -> Result>>> { + pub fn next_nodes(&mut self) -> Result>>> { let nodes = self.dag.find_next_non_descendant_nodes(&self.root_nodes)?; self.root_nodes = BTreeSet::new(); for id in nodes.iter().map(|n| n.id().to_vec()) { @@ -52,3 +52,19 @@ where } } } + +impl<'dag, S, HW> Iterator for Missing<'dag, S, HW> +where + S: Store, + HW: HashWriter, +{ + type Item = Result>>; + + fn next(&mut self) -> Option { + match self.next_nodes() { + Ok(Some(ns)) => Some(Ok(ns)), + Ok(None) => None, + Err(e) => Some(Err(e)), + } + } +} diff --git a/src/dag/mod.rs b/src/dag/mod.rs index a21a072..46c724d 100644 --- a/src/dag/mod.rs +++ b/src/dag/mod.rs @@ -155,7 +155,7 @@ where } /// Construct a [Missing] iterator for this dag given a set of remote root nodes. - pub fn missing_iter<'dag, 'iter>( + pub fn missing<'dag, 'iter>( &'dag self, search_nodes: BTreeSet>, ) -> Missing<'iter, S, HW>