matrixable
A crate providing utilities for matrix manipulation.
Example
use MatrixExt;
This library possesses two main traits: MatrixExt and MatrixMutExt.
MatrixExt
This trait requires three methods to be implemented:
num_rows: which should give the number of rows of the matrix.num_cols: which should give the the number of columns.get: which may return a reference to an element of the matrix.
Once those methods are implemented, the following features automatically become available:
- immutability: All the functions provided by this trait does not modify elements of the matrix-like struct unless that struct is consumed in the process.
- iterators: iteratate over all elements and also over rows, columns and diagonals.
- access: elements differently without changing their positions: transpose access, rotate access, submatrix...
- transformation: transform struct into another type, maybe another matrix.
- metadata: obtain information about the matrix: symmetry, dimensions, diagonality...
MatrixMutExt
This traits requires for the struct to first implement MatrixExt as well as its single required method: get_mut.
Once implemented MatrixMutExt structs inherits features from MatrixExt plus the following:
- mutability: Functions provided by this trait allow elements to be mutated. Mutable versions of the above features also become available (iterators, access).
- in-place modification.
More
See this documentation for additional informations.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.