#iterator #dimensional #2d #3d #range

nd_iter

创建 2 和 3 维迭代器的方法

4 个版本

使用旧的 Rust 2015

0.0.4 2015 年 2 月 23 日
0.0.3 2015 年 1 月 12 日
0.0.2 2015 年 1 月 4 日
0.0.1 2014 年 12 月 8 日

#1764Rust 模式


被用于 sandvox

MIT 许可证

5KB
123

nd_iter

创建 2 和 3 维迭代

你是否曾经想要遍历 2 或 3 维空间?你可能卡在了写类似这样的代码上

for x in range(0, n) {
    for y in range(0, n) {
        for z in range(0, n) {
            do_something(x, y, z);
        }
    }
}

这是一个对我来说很常见的模式,所以我写了 iter_nd 来压缩迭代器。

使用 iter_nd,你可以将上面的代码写成

for (x, y, z) in iter_3d(range(0,n), range(0,n), range(0,n)) {
    do_something(x, y, z);
}

更简单,更简洁,最重要的是你可以轻松定义一个返回 iter_3d 调用结果的函数,这在嵌套 for 循环示例中会困难得多。

示例

extern crate nd_iter;
use nd_iter::iter_2d;
use nd_iter::iter_3d;
use std::iter::range_inclusive;

fn main() {
    for (x, y) in iter_2d(range(0u, 2), range_inclusive(2u, 5)) {
        println!("{}, {}", x, y);
    }

    for (x, y, z) in iter_3d(range(0u, 2), range(2u, 4), range(0u, 2)) {
        println!("{}, {}, {}", x, y, z);
    }
}


无运行时依赖