proposal: two-dimensional array slices
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