[][src]Struct reiterate::Reiterate

pub struct Reiterate<I> where
    I: Iterator,
    I::Item: StableDeref
{ /* fields omitted */ }

An adaptor around an iterator that can produce multiple iterators sharing an underlying cache.

The underlying iterator must produce heap-allocated StableDeref values, e.g. Box or String. If you have an iterator that produces Copy values, use CopyReiterator instead.

use reiterate::Reiterate;

let x = vec!["a".to_string(), "b".to_string(), "c".to_string(), "d".to_string()];
let reiterate = Reiterate::new(x);
for i in &reiterate {
    println!("{}", i);    
}

for i in &reiterate {
    // will reuse cached values
    println!("{}", i);    
}

In case your values are not heap-allocated, use .map(Box::new):

use reiterate::Reiterate;
let x = vec![1, 2, 3, 4];

let reiterate = Reiterate::new(x.into_iter().map(Box::new));
for i in &reiterate {
    println!("{}", i);
}

Methods

impl<I> Reiterate<I> where
    I: Iterator,
    I::Item: StableDeref
[src]

pub fn new<T>(iter: T) -> Self where
    T: IntoIterator<Item = I::Item, IntoIter = I>, 
[src]

Trait Implementations

impl<'a, I> IntoIterator for &'a Reiterate<I> where
    I: Iterator,
    I::Item: StableDeref
[src]

type IntoIter = Reiterator<'a, I>

Which kind of iterator are we turning this into?

type Item = &'a <I::Item as Deref>::Target

The type of the elements being iterated over.

Auto Trait Implementations

impl<I> Send for Reiterate<I> where
    I: Send,
    <I as Iterator>::Item: Send

impl<I> !Sync for Reiterate<I>

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]