# Struct std::iter::Unfold [−] [src]

```pub struct Unfold<St, F> {
pub state: St,
// some fields omitted
}```
Deprecated since 1.2.0

: has gained enough traction to retain its position in the standard library

An iterator that passes mutable state to a closure and yields the result.

# Examples

An iterator that yields sequential Fibonacci numbers, and stops on overflow.

#![feature(iter_unfold)] fn main() { use std::iter::Unfold; // This iterator will yield up to the last Fibonacci number before the max // value of `u32`. You can simply change `u32` to `u64` in this line if // you want higher values than that. let mut fibonacci = Unfold::new((Some(0u32), Some(1u32)), |&mut (ref mut x2, ref mut x1)| { // Attempt to get the next Fibonacci number // `x1` will be `None` if previously overflowed. let next = match (*x2, *x1) { (Some(x2), Some(x1)) => x2.checked_add(x1), _ => None, }; // Shift left: ret <- x2 <- x1 <- next let ret = *x2; *x2 = *x1; *x1 = next; ret }); for i in fibonacci { println!("{}", i); } }
```#![feature(iter_unfold)]
use std::iter::Unfold;

// This iterator will yield up to the last Fibonacci number before the max
// value of `u32`. You can simply change `u32` to `u64` in this line if
// you want higher values than that.
let mut fibonacci = Unfold::new((Some(0u32), Some(1u32)),
|&mut (ref mut x2, ref mut x1)| {
// Attempt to get the next Fibonacci number
// `x1` will be `None` if previously overflowed.
let next = match (*x2, *x1) {
(Some(x2), Some(x1)) => x2.checked_add(x1),
_ => None,
};

// Shift left: ret <- x2 <- x1 <- next
let ret = *x2;
*x2 = *x1;
*x1 = next;

ret
});

for i in fibonacci {
println!("{}", i);
}
```

## Fields

 `state` UnstableInternal state that will be passed to the closure on the next iteration

## Methods

### `impl<A, St, F> Unfold<St, F> where F: FnMut(&mut St) -> Option<A>`

#### `fn new(initial_state: St, f: F) -> Unfold<St, F>`

Deprecated since 1.2.0

: has gained enough traction to retain its position in the standard library

Creates a new iterator with the specified closure as the "iterator function" and an initial state to eventually pass to the closure