3 个不稳定版本

0.2.0 2021 年 1 月 18 日
0.1.1 2021 年 1 月 14 日
0.1.0 2021 年 1 月 14 日

1468算法

MIT 协议

7KB
94

unfold

Rust crates.io

Rust 中的简单展开实现

展开 允许你创建一个迭代器,从给定的初始值开始,对当前状态应用给定的函数,将结果存储到下一次迭代中,并返回当前状态。

展开定义了一个无限迭代器:你必须手动停止它,就像示例中那样。

示例

use unfold::Unfold;

// Create a vector containing the first 5 numbers from the Fibonacci
// series
let fibonacci_numbers: Vec<u64> = 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);

lib.rs:

unfold

展开函数接受一个函数 f 和一个初始值 i,返回一个列表,定义为 [i, f(i), f(f(i)), ...]。

该库定义了 Unfold 结构体,它将展开函数作为无限迭代器实现。

快速开始

使用 Unfold 非常简单。用户调用新函数,提供函数作为第一个参数和初始值作为第二个参数。然后可以使用 Unfold 实例作为任何迭代器,但不要忘记:展开永远不会结束,必须停止它。

以下是一个示例

use unfold::Unfold;

// Create a vector containing the first 5 numbers from the Fibonacci
// series
let fibonacci_numbers: Vec<u64> = 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);

无运行时依赖项