From efda30c15dbded2b508863b003bbca68d8f6d8a2 Mon Sep 17 00:00:00 2001 From: Chris Mikkelson Date: Sun, 7 Apr 2024 13:37:03 -0500 Subject: [PATCH] iter: IterBox -> IterCell, private struct --- src/iter.rs | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/iter.rs b/src/iter.rs index d138948..c774aa8 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -6,11 +6,11 @@ use std::rc::Rc; pub trait Iter: Iterator + Sized { fn seek>(&mut self, key: T); - fn wrap_iter) -> O, O: Iterator>( + fn wrap_iter) -> O, O: Iterator>( self, f: F, ) -> impl Iter { - let it = IterBox::new(self); + let it = IterCell::new(self); WrapIter { inner: it.clone(), outer: f(it), @@ -32,36 +32,39 @@ pub trait Iter: Iterator + Sized { // WrapIter -pub struct IterBox(Rc>); +pub struct IterCell { + ic: Rc> +} -impl Clone for IterBox { +impl Clone for IterCell { fn clone(&self) -> Self { - IterBox(self.0.clone()) + IterCell{ic: self.ic.clone()} } } -impl IterBox { - fn new(i: I) -> IterBox { - IterBox(Rc::new(RefCell::new(i))) +impl IterCell { + fn new(i: I) -> IterCell { + IterCell{ic: Rc::new(RefCell::new(i))} } } -impl Iterator for IterBox { +impl Iterator for IterCell { type Item = Entry; fn next(&mut self) -> Option { - self.0.borrow_mut().next() + self.ic.borrow_mut().next() } } -impl Iter for IterBox { +impl Iter for IterCell { fn seek>(&mut self, key: T) { - self.0.borrow_mut().seek(key); + self.ic.borrow_mut().seek(key); } } + struct WrapIter> { - inner: IterBox, + inner: IterCell, outer: O, } -- 2.50.1