array2d icon indicating copy to clipboard operation
array2d copied to clipboard

proposal: two-dimensional array slices

Open hades opened this issue 5 months ago • 0 comments

Proposal: support for Array2d slices.

Array2d is a very useful type for two-dimensional data storage. I've used it extensively while solving Advent of Code and Everybody Codes puzzles[1].

However, one feature that I wish the crate provided was array "views", i.e. smaller rectangular subarrays that I could borrow into a function without copying an entire (large) array.

This would function similarly to a (one-dimensional) Rust slice &[T].

I propose an API similar to Array2D itself, so that in many cases this new type can be used as a drop-in replacement. In particular, the following functions will be supported:

  • num_rows, num_columns, num_elements, row_len, column_len
  • get
  • row_iter, column_iter
  • rows_iter, columns_iter
  • index
  • eq, ne

For mutable slices also:

  • get_mut
  • set
  • index_mut

Additionally, a copy of an array can be constructed with an as_array method.

In [2] I've cobbled together a very simple implementation of an ArrayView for reference on how such a type could be useful.

[1] https://github.com/hades/everybodycodes [2] https://github.com/hades/everybodycodes/blob/master/src/quest10.rs#L35

hades avatar Aug 23 '25 11:08 hades