Crate dimensionals

source ·
Expand description

The Dimensionals library provides a multidimensional array implementation with a generic storage backend over a generic number type.

The main types are:

The library also provides some convenience macros for creating arrays:

  • scalar!: Creates a 0-dimensional array (a single value).
  • vector!: Creates a 1-dimensional array.
  • matrix!: Creates a 2-dimensional array.

§Example

use dimensionals::{matrix, Dimensional, LinearArrayStorage};

let m: Dimensional<i32, LinearArrayStorage<i32, 2>, 2> = matrix![
    [1, 2, 3],
    [4, 5, 6]
];
assert_eq!(m[[0, 0]], 1);
assert_eq!(m[[1, 1]], 5);

§Performance

The LinearArrayStorage backend stores elements in a contiguous Vec<T> and computes element indices on the fly. This provides good cache locality for traversals, but may not be optimal for sparse or very high dimensional arrays.

Alternative storage backends can be implemented by defining a type that implements the DimensionalStorage trait.

Macros§

Structs§

Traits§