Removed IntoIterator for TapTree implementation

In the future, TapTree may iterate over different node types, and that's why it does not have `iter()` function; using instead `script_leafs`. Thus, we should not have IntoIterator implementation as well
This commit is contained in:
Dr Maxim Orlovsky 2022-04-06 22:20:05 +02:00
parent 7a5482d23a
commit 3c59897598
No known key found for this signature in database
GPG Key ID: FFC0250947E5C6F7
1 changed files with 9 additions and 18 deletions

View File

@ -158,7 +158,15 @@ impl TapTree {
/// Returns [`TapTreeIter`] iterator for a taproot script tree, operating in DFS order over
/// tree [`ScriptLeaf`]s.
pub fn script_leaves(&self) -> TapTreeIter {
self.into_iter()
match (self.0.branch().len(), self.0.branch().last()) {
(1, Some(Some(root))) => {
TapTreeIter {
leaf_iter: root.leaves.iter()
}
}
// This should be unreachable as we Taptree is already finalized
_ => unreachable!("non-finalized tree builder inside TapTree"),
}
}
}
@ -177,23 +185,6 @@ impl<'tree> Iterator for TapTreeIter<'tree> {
}
}
impl<'tree> IntoIterator for &'tree TapTree {
type Item = &'tree ScriptLeaf;
type IntoIter = TapTreeIter<'tree>;
fn into_iter(self) -> Self::IntoIter {
match (self.0.branch().len(), self.0.branch().last()) {
(1, Some(Some(root))) => {
TapTreeIter {
leaf_iter: root.leaves.iter()
}
}
// This should be unreachable as we Taptree is already finalized
_ => unreachable!("non-finalized tree builder inside TapTree"),
}
}
}
impl Output {
pub(super) fn insert_pair(&mut self, pair: raw::Pair) -> Result<(), encode::Error> {
let raw::Pair {