IntoShadowCounted

Trait IntoShadowCounted 

Source
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§

Source

fn shadow_counted<'a>(self) -> ShadowCountedIter<'a, Self, ()>
where Self: Sized + Iterator,

Converts the iterator into a ShadowCountedIter with default (unit) supplemental data.

Source

fn nested_shadow_counted<'a, I: Iterator, S: Clone>( self, parent: &'a mut ShadowCountedIter<'_, I, S>, ) -> ShadowCountedIter<'a, Self, S>
where Self: Sized + Iterator,

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

Implementors§