How would I rewrite this function, so the iterator can also return the x and y location of the slice?
pub fn expose_paginated_elements(&self) -> impl Iterator<Item = &Element> {
let start_x = self.from.x as usize;
let start_y = self.from.y as usize;
let end_x = start_x + self.pagination_size.x as usize;
let end_y = start_y + self.pagination_size.y as usize;
self.cells[start_x..end_x]
.iter()
.flat_map(move |slice| &slice[start_y..end_y])
.map(|(_, elem)| elem)
}
This would be the idea:
pub fn expose_paginated_elements(&self) -> impl Iterator<Item = (usize, usize, &Element)> {
let start_x = self.from.x as usize;
let start_y = self.from.y as usize;
let end_x = start_x + self.pagination_size.x as usize;
let end_y = start_y + self.pagination_size.y as usize;
self.cells[start_x..end_x]
.iter()
.enumerate()
.flat_map(move |(x, slice)| &slice[start_y..end_y])
.enumerate()
.map(|(y, (_, elem))| (x, y, elem))
}