3 个版本
0.1.2 | 2022 年 7 月 11 日 |
---|---|
0.1.1 | 2022 年 7 月 11 日 |
0.1.0 | 2022 年 7 月 10 日 |
#2864 在 Rust 模式
3KB
Iterify
使用 Iterify 在任何东西上进行迭代!这个crate可以将任何类型 T
转换为可迭代的,并允许你通过可变引用迭代,产生你想要的任何类型。
它的行为与 std::iter::successors
类似,不同之处在于 Iterify 允许你通过 &mut
引用就地修改类型。
示例
use iterify::Iterify;
fn main() {
let mut num = 12;
let collatz: Vec<_> = num
.iterify(|num| {
*num = match *num {
0 | 1 => return None,
n if n % 2 != 0 => n * 3 + 1,
n => n / 2,
};
Some(*num)
})
.collect();
assert_eq!(collatz, &[6, 3, 10, 5, 16, 8, 4, 2, 1]);
assert_eq!(num, 1);
}