csvbinmatrix 0.8.0

Binary matrix Compressed Sparse Vector
Documentation
# Create CSV Binary Matrix

This module defines the creation logic for [`CSVBinaryMatrix`], except from files (for this, see [`csvbinmatrix::matrix::io`]) module.

[`CSVBinaryMatrix`]: crate::matrix::CSVBinaryMatrix
[`csvbinmatrix::matrix::io`]: crate::matrix::io

In all the examples bellow we consider this matrix:

```rust
use csvbinmatrix::prelude::CSVBinaryMatrix;

let matrix = CSVBinaryMatrix::try_from(&[
    [0, 0, 0],
    [0, 0, 1],
    [0, 1, 1],
    [1, 1, 1],
]).unwrap();
```

All the following matrices are equivalent:
```rust
use csvbinmatrix::prelude::CSVBinaryMatrix;
#
# let matrix = CSVBinaryMatrix::try_from(&[
#     [0, 0, 0],
#     [0, 0, 1],
#     [0, 1, 1],
#     [1, 1, 1],
# ]).unwrap();

match CSVBinaryMatrix::try_from(&[
    [0, 0, 0],
    [0, 0, 1],
    [0, 1, 1],
    [1, 1, 1],
]) {
    Ok(matrix_from_u8_vectors) => assert_eq!(matrix_from_u8_vectors, matrix),
    Err(e) => panic!("[ERROR] {e}"),
}

match CSVBinaryMatrix::try_from(&vec![
    vec![false, false, false],
    vec![false, false, true],
    vec![false, true, true],
    vec![true, true, true],
]) {
    Ok(matrix_from_booleans) => assert_eq!(matrix_from_booleans, matrix),
    Err(e) => panic!("[ERROR] {e}"),
}

match CSVBinaryMatrix::try_from_coordinates(
    4,
    3,
    vec![(1, 2), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2)],
) {
    Ok(matrix_from_coordinates) => assert_eq!(matrix_from_coordinates, matrix),
    Err(e) => panic!("[ERROR] {e}"),
}

use csvbinmatrix::prelude::Coordinates;

match CSVBinaryMatrix::try_from_coordinates(
    4,
    3,
    vec![
        Coordinates::new(1, 2),
        Coordinates::new(2, 1),
        Coordinates::new(2, 2),
        Coordinates::new(3, 0),
        Coordinates::new(3, 1),
        Coordinates::new(3, 2),
    ],
) {
    Ok(matrix_from_coordinates) => assert_eq!(matrix_from_coordinates, matrix),
    Err(e) => panic!("[ERROR] {e}"),
}

match CSVBinaryMatrix::new(4, 3, vec![5, 2, 1, 1, 1, 1]) {
    Ok(m) => assert_eq!(m, matrix),
    Err(e) => panic!("[ERROR] {e}"),
}
```