multiarray

Crates.iomultiarray
lib.rsmultiarray
version0.1.3
sourcesrc
created_at2015-09-30 18:08:52.729223
updated_at2015-12-11 23:54:29.779751
descriptionSmall Rust library for handling multi-dimensional data
homepagehttps://github.com/sellibitze/multiarray
repositoryhttps://github.com/sellibitze/multiarray.git
max_upload_size
id3139
size50,749
(sellibitze)

documentation

README

This library provides ways to create and deal with multi-dimensional arrays. It basically tries to generalize Box<[T]>, &[T] and &mut[T] to multiple dimensions with some convenient methods that allow you to slice views, create lower-dimensional slices of it, subsampled or reversed views or even swap dimensions (for example, to create a transposed view of a 2D matrix).

Example

In the following example you'll see how a 3D array and two views into it (2D and 1D) can be created.

use multiarray::*;

let mut voxels = Array3D::new([3,4,5], 0); // 3x4x5 ints
voxels[[0,0,0]] = 1;
voxels[[1,2,3]] = 23;
voxels[[2,3,4]] = 42;
assert!(voxels[[1,2,3]] == 23);
let slice = voxels.eliminated_dim(1, 2);   // 2D slice
assert!(slice[[1,3]] == 23);
let lane = slice.eliminated_dim(1, 3);     // 1D lane
assert!(lane[1] == 23);

Here, slice is a 2D slice of the 3D volume (at y=2) and lane is a one-dimensional view that also acts as an ExactSize/DoubleEnded iterator.

Commit count: 6

cargo fmt