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 日 |
#1764 在 Rust 模式
被用于 sandvox
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);
}
}