jaq_core/rc_iter.rs
1/// A more flexible version of `&mut impl Iterator`.
2pub struct RcIter<I: ?Sized>(core::cell::RefCell<I>);
3
4impl<T, I: Iterator<Item = T> + ?Sized> Iterator for &RcIter<I> {
5 type Item = T;
6 fn next(&mut self) -> Option<T> {
7 self.0.borrow_mut().next()
8 }
9}
10
11impl<I> RcIter<I> {
12 /// Construct a new mutable iterator.
13 pub const fn new(iter: I) -> Self {
14 Self(core::cell::RefCell::new(iter))
15 }
16}