Function repeat_with
fn repeat_with<A, F: FnMut() -> A>(repeater: F) -> RepeatWith<F>
Creates a new iterator that repeats elements of type A endlessly by
applying the provided closure, the repeater, F: FnMut() -> A.
The repeat_with() function calls the repeater over and over again.
Infinite iterators like repeat_with() are often used with adapters like
[Iterator::take()], in order to make them finite.
If the element type of the iterator you need implements Clone, and
it is OK to keep the source element in memory, you should instead use
the repeat() function.
An iterator produced by repeat_with() is not a DoubleEndedIterator.
If you need repeat_with() to return a DoubleEndedIterator,
please open a GitHub issue explaining your use case.
Examples
Basic usage:
use iter;
// let's assume we have some value of a type that is not `Clone`
// or which we don't want to have in memory just yet because it is expensive:
;
// a particular value forever:
let mut things = repeat_with;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
Using mutation and going finite:
use iter;
// From the zeroth to the third power of two:
let mut curr = 1;
let mut pow2 = repeat_with
.take;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// ... and now we're done
assert_eq!;