Function imbl::iter::unfold

source ·
pub fn unfold<F, S, A>(value: S, f: F) -> impl Iterator<Item = A>
where F: Fn(S) -> Option<(A, S)>,
Expand description

Create an iterator of values using a function to update an owned state value.

The function is called with the current state as its argument, and should return an Option of a tuple of the next value to yield from the iterator and the updated state. If the function returns None, the iterator ends.

§Examples

// Create an infinite stream of numbers, starting at 0.
let mut it = unfold(0, |i| Some((i, i + 1)));

// Make a list out of its first five elements.
let numbers = Vector::from_iter(it.take(5));
assert_eq!(numbers, vector![0, 1, 2, 3, 4]);