Expand description
§range2d — A 2D Range Iterator
This crate provides Range2D, a highly flexible, efficient, and composable iterator
for traversing a 2D rectangular coordinate space.
It yields (y, x) coordinate pairs from a rectangular region defined by two Range<usize> bounds,
visiting each row in order from top to bottom and each column from left to right.
§Features
- Forward and backward iteration (
DoubleEndedIterator) - Exact length tracking (
ExactSizeIterator) - Safe skipping with
.nth() - Efficient
split()for parallel workloads split_into(n)for evenly sized chunkschunks_of(n)for fixed-size partitioning- Resettable and reusable with
.reset()
§Example
use range2d::Range2D;
let iter = Range2D::new(0..2, 0..3);
let coords: Vec<_> = iter.collect();
assert_eq!(coords, vec![
(0, 0), (0, 1), (0, 2),
(1, 0), (1, 1), (1, 2),
]);§Use Cases
- Tile maps
- Grid-based simulations
- Procedural generation
- Image or framebuffer traversal
§Integration
This iterator is compatible with all iterator adapters (.rev(), .take(), .map(), etc.),
and behaves predictably when fused or split into subranges.
Structs§
- Range2D
- A 2D coordinate iterator over
(y, x)pairs.