如何在包含枚举索引的2D数组上返回迭代器?

时间:2018-09-14 22:19:24

标签: iterator rust

我有一个包含2D数组的结构:

struct Block;

struct World {
    blocks: [[Block; 10]; 10],
}

我如何编写一个在2D数组上返回迭代器但包含枚举索引的函数?

fn enumerate_blocks(&self) -> impl Iterator<Item = (usize, usize, &Block)>

我设法编写了一个函数的实现,该函数只返回没有枚举索引的迭代器:

fn blocks(&self) -> impl Iterator<Item = &Block> {
    self.blocks.iter().flat_map(|x| x.iter())
}

如果我一次调用Iterator::enumerate,我将在(usize, [B; 10])上得到一个迭代器。接下来我该怎么做才能在(usize, usize, B) s上获得迭代器?

我知道我可以使函数返回自定义结构,然后像Iterator一样实现image,但理想情况下,我希望避免这种情况。

0 个答案:

没有答案