pub enum MtxData<T: Num, const NDIM: usize = 2> {
Dense([usize; NDIM], Vec<T>, SymInfo),
Sparse([usize; NDIM], Vec<[usize; NDIM]>, Vec<T>, SymInfo),
}
Expand description
The main enum of this crate, corresponding to the 2 kind of usage of mtx files. Both contains a first line with dimensions. Dense is a list of numbers. Sparse is a list of coordinates and values.
Variants§
Implementations§
Source§impl<T: Num, const NDIM: usize> MtxData<T, NDIM>
impl<T: Num, const NDIM: usize> MtxData<T, NDIM>
Sourcepub fn from_file<P>(path: P) -> Result<Self, MtxError>
pub fn from_file<P>(path: P) -> Result<Self, MtxError>
Build a MtxData
from a matrix market (usually .mtx) file.
§Example
use matrix_market_rs::{MtxData, SymInfo, MtxError};
use std::fs::File;
use std::io::Write;
fn main() -> Result<(), MtxError> {
let mtx_content = r#"
%%MatrixMarket matrix coordinate integer symmetric
2 2 2
1 1 3
2 2 4
"#;
let mut f = File::create("sparse2x2.mtx")?;
f.write_all(mtx_content.trim().as_bytes());
let shape = [2,2];
let indices = vec![[0,0], [1,1]];
let nonzeros = vec![3,4];
let sym = SymInfo::Symmetric;
let sparse:MtxData<i32> = MtxData::from_file("sparse2x2.mtx")?;
assert_eq!(sparse, MtxData::Sparse(shape, indices, nonzeros, sym));
Ok(())
}
§Errors
It could fail for many reasons but for example:
- File doesn’t match the matrix market format.
- an IO error (file not found etc.)
Trait Implementations§
impl<T: Eq + Num, const NDIM: usize> Eq for MtxData<T, NDIM>
impl<T: Num, const NDIM: usize> StructuralPartialEq for MtxData<T, NDIM>
Auto Trait Implementations§
impl<T, const NDIM: usize> Freeze for MtxData<T, NDIM>
impl<T, const NDIM: usize> RefUnwindSafe for MtxData<T, NDIM>where
T: RefUnwindSafe,
impl<T, const NDIM: usize> Send for MtxData<T, NDIM>where
T: Send,
impl<T, const NDIM: usize> Sync for MtxData<T, NDIM>where
T: Sync,
impl<T, const NDIM: usize> Unpin for MtxData<T, NDIM>where
T: Unpin,
impl<T, const NDIM: usize> UnwindSafe for MtxData<T, NDIM>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more