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:
DimensionalStorage: A trait defining methods for storage backends.LinearArrayStorage: A specific storage backend using a linear memory layout.Dimensional: The main multidimensional array type, generic over the storage backend.
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§
- A multidimensional array type.
- A linear array storage backend for multidimensional arrays.
Traits§
- A trait for storage backends for multidimensional arrays.