An open API service indexing awesome lists of open source software.

https://github.com/filipporanza/unfold

A simple unfold implementation in Rust
https://github.com/filipporanza/unfold

iterator iterator-library library rust unfold

Last synced: about 1 month ago
JSON representation

A simple unfold implementation in Rust

Awesome Lists containing this project

README

        

# unfold
![Rust](https://github.com/FilippoRanza/unfold/workflows/Rust/badge.svg?branch=master) ![crates.io](https://img.shields.io/crates/v/unfold.svg)

A simple unfold implementation in Rust

[unfold](https://en.wikipedia.org/wiki/Fold_(higher-order_function)) let you
create an iterator that, staring from a given initial value,
applies a given function to the current state, store the result for
the next iteration, and return the current state.

Unfold defines an endless iterator: you must stop it *by hand*, like in the
example.

## Example
```rust
use unfold::Unfold;

// Create a vector containing the first 5 numbers from the Fibonacci
// series
let fibonacci_numbers: Vec = Unfold::new(|(a, b)| (b, a + b), (0, 1))
.map(|(a, _)| a)
.take(5) //Unfold iterator never stops.
.collect();
assert_eq!(vec![0, 1, 1, 2, 3], fibonacci_numbers);
```