我有一个包含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
,但理想情况下,我希望避免这种情况。