pub trait IntoShadowCounted {
// Provided methods
fn shadow_counted<'a>(self) -> ShadowCountedIter<'a, Self, ()> ⓘ
where Self: Sized + Iterator { ... }
fn nested_shadow_counted<'a, I: Iterator, S: Clone>(
self,
parent: &'a mut ShadowCountedIter<'_, I, S>,
) -> ShadowCountedIter<'a, Self, S> ⓘ
where Self: Sized + Iterator { ... }
}Expand description
A extension trait to convert any iterator into a ShadowCountedIter.
This must be in scope to use the shadow_counted method on an iterator.
When possible the From and Into may be more convenient to use.
§Example
let vec = vec![1, 2, 3];
let mut iter = vec.into_iter().shadow_counted();
while let Some(_) = iter.next() {}
assert_eq!(iter.counter(), 3);Provided Methods§
Sourcefn shadow_counted<'a>(self) -> ShadowCountedIter<'a, Self, ()> ⓘ
fn shadow_counted<'a>(self) -> ShadowCountedIter<'a, Self, ()> ⓘ
Converts the iterator into a ShadowCountedIter with default (unit) supplemental data.
Sourcefn nested_shadow_counted<'a, I: Iterator, S: Clone>(
self,
parent: &'a mut ShadowCountedIter<'_, I, S>,
) -> ShadowCountedIter<'a, Self, S> ⓘ
fn nested_shadow_counted<'a, I: Iterator, S: Clone>( self, parent: &'a mut ShadowCountedIter<'_, I, S>, ) -> ShadowCountedIter<'a, Self, S> ⓘ
Converts the iterator into a nested ShadowCountedIter.
§Arguments
parent- The parent iterator to commit the count to.
§Example
let mut parent = vec![1, 2, 3].into_iter().shadow_counted();
parent.next();
let mut nested = vec![4, 5].into_iter().nested_shadow_counted(&mut parent);
assert_eq!(nested.counter(), 1); // Inherits parent's count
for _ in nested.by_ref() {}
nested.commit().unwrap();
assert_eq!(parent.counter(), 3); // Parent now has nested count