Struct core_extensions::iterators::IterConstructor[][src]

pub struct IterConstructor<F> {
    pub f: F,
}

Constructs Iterators using a closure.

This can construct an Iterator (with IntoIterator::into_iter) multiple times if the closure is Copy.

Closures can be Copy and/or Clone since Rust 1.26.

Example

This example only runs from Rust 1.26 onwards,

use core_extensions::iterators::IterConstructor;

let list=vec!["hello","world"];

let constructor=IterConstructor::new(||{
    list.iter().enumerate().map(|(i,v)| v.repeat(i) )
});

let list_2=vec!["".to_string(),"world".into()];

assert_eq!(constructor.into_iter().collect::<Vec<_>>() , list_2);

assert_eq!(constructor.into_iter().collect::<Vec<_>>() , list_2);

Fields

The closure.

Methods

impl<F> IterConstructor<F>
[src]

Constructs an IterConstructor.

Trait Implementations

impl<F: Copy> Copy for IterConstructor<F>
[src]

impl<F: Clone> Clone for IterConstructor<F>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<F, I> IntoIterator for IterConstructor<F> where
    F: FnOnce() -> I,
    I: Iterator
[src]

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

Auto Trait Implementations

impl<F> Send for IterConstructor<F> where
    F: Send

impl<F> Sync for IterConstructor<F> where
    F: Sync