# HG changeset patch # User unC0Rr # Date 1738592728 -3600 # Node ID 669cdf697f1632072278b92d59344289d821c759 # Parent ac8a3f3771971a9ce72b971cc47bbfa053fd74da Simplify 'for' loop by keeping more information about iterator diff -r ac8a3f377197 -r 669cdf697f16 rust/mapgen/src/lib.rs --- a/rust/mapgen/src/lib.rs Mon Feb 03 15:03:26 2025 +0100 +++ b/rust/mapgen/src/lib.rs Mon Feb 03 15:25:28 2025 +0100 @@ -66,9 +66,8 @@ let mut texture = Vec2D::new(&land.size().size(), 0); if let Some(land_sprite) = theme.land_texture() { - for (row_index, (land_row, tex_row)) in land.rows().zip(texture.rows_mut()).enumerate() + for (sprite_row, (land_row, tex_row)) in land_sprite.rows().cycle().zip(land.rows().zip(texture.rows_mut())) { - let sprite_row = land_sprite.get_row(row_index % land_sprite.height() as usize); let mut x_offset = 0; while sprite_row.len() < land.width() - x_offset { let copy_range = x_offset..x_offset + sprite_row.len(); diff -r ac8a3f377197 -r 669cdf697f16 rust/mapgen/src/theme.rs --- a/rust/mapgen/src/theme.rs Mon Feb 03 15:03:26 2025 +0100 +++ b/rust/mapgen/src/theme.rs Mon Feb 03 15:25:28 2025 +0100 @@ -7,7 +7,7 @@ path::Path, slice::{from_raw_parts, from_raw_parts_mut}, }; - +use std::slice::ChunksExact; use integral_geometry::Size; use vec2d::Vec2D; @@ -32,7 +32,7 @@ } #[inline] - pub fn rows(&self) -> impl DoubleEndedIterator { + pub fn rows(&self) -> ChunksExact { self.pixels.rows() } diff -r ac8a3f377197 -r 669cdf697f16 rust/vec2d/src/lib.rs --- a/rust/vec2d/src/lib.rs Mon Feb 03 15:03:26 2025 +0100 +++ b/rust/vec2d/src/lib.rs Mon Feb 03 15:25:28 2025 +0100 @@ -1,7 +1,7 @@ use integral_geometry::Size; use std::{ ops::{Index, IndexMut}, - slice::SliceIndex, + slice::{ChunksExact, ChunksExactMut, SliceIndex}, }; #[derive(Debug, Clone)] @@ -114,12 +114,12 @@ } #[inline] - pub fn rows(&self) -> impl DoubleEndedIterator { + pub fn rows(&self) -> ChunksExact<'_, T> { self.data.chunks_exact(self.width()) } #[inline] - pub fn rows_mut(&mut self) -> impl DoubleEndedIterator { + pub fn rows_mut(&mut self) -> ChunksExactMut<'_, T> { let width = self.width(); self.data.chunks_exact_mut(width) }