3 个版本

0.1.2 2022 年 7 月 11 日
0.1.1 2022 年 7 月 11 日
0.1.0 2022 年 7 月 10 日

#2864Rust 模式

自定义许可证

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);
}

无运行时依赖