是否与Rust中Haskell的迭代等效?

问题描述 投票:2回答:3

[Haskell的iterate函数反复将函数应用于值以生成一系列值。例如,将(^ 2)应用于2会生成2、2 ^ 2、2 ^ 2 ^ 2、2 ^ 2 ^ 2 ^ 2,...(2、4、16、256,...)

Rust中是否有一个等价物?

rust
3个回答
5
投票

这在标准库中不存在,但是iterate条板箱具有itertools

[创建一个新的迭代器,该迭代器将函数无限地应用于值并产生结果。

iterate

0
投票

iterate似乎就是您想要的。


0
投票

use itertools::iterate; itertools::assert_equal(iterate(1, |&i| i * 3).take(5), vec![1, 3, 9, 27, 81]); 开始,您可以使用itertools::iterate

因此,对于此问题,您将执行以下操作:

itertools::iterate

Rust 1.34

也请看std::iter::successors,它可能会更强大。

© www.soinside.com 2019 - 2024. All rights reserved.