У меня есть структура, содержащая 2D-массив:
struct Block;
struct World {
blocks: [[Block; 10]; 10],
}
Как написать функцию, которая возвращает итератор для двумерного массива, но с включенными индексами перечисления?
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
, но в идеале я бы хотел этого избежать.