Enum nalgebra_sparse::io::MatrixMarketErrorKind
source · [−]#[non_exhaustive]
pub enum MatrixMarketErrorKind {
ParsingError,
InvalidHeader,
EntryMismatch,
TypeMismatch,
ZeroError,
SparseFormatError(SparseFormatErrorKind),
DiagonalError,
IOError(ErrorKind),
NotLowerTriangle,
NonSquare,
}Expand description
Errors produced by functions that expect well-formed matrix market format data.
Variants (Non-exhaustive)
This enum is marked as non-exhaustive
ParsingError
Parsing failure.
Indicates that the parser failed, for example due to an unexpected string.
Examples
let str = r#"
%%MatrixMarket invalid invalid invalid invalid
1 1 1
1 1 5
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(), MatrixMarketErrorKind::ParsingError);InvalidHeader
Indicates that the matrix market header is invalid.
Examples
let str = r#"
%%MatrixMarket matrix coordinate real hermitian
% a real matrix can't be hermitian
1 1 1
1 1 5
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::InvalidHeader);EntryMismatch
Indicates that the number of data entries in the matrix market file does not match the header.
Examples
let str = r#"
%%matrixmarket matrix coordinate real general
% it has one more data entry than specified.
3 3 1
2 2 2
2 3 2
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::EntryMismatch);TypeMismatch
Indicates that the scalar type requested is not compatible with the scalar type stored in the matrix market file.
Examples
let str = r#"
%%matrixmarket matrix coordinate real general
% it should be loaded with load_coo_from_matrix_market_str::<f64>(str) (or f32)
3 3 2
2 2 2.22
2 3 2.22
"#;
let matrix_result = load_coo_from_matrix_market_str::<i32>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::TypeMismatch);ZeroError
Indicates that zero has been used as an index in the data.
Note: The matrix market format uses 1-based indexing.
Examples
let str = r#"
%%matrixmarket matrix coordinate real general
1 1 1
0 0 10
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::ZeroError);SparseFormatError(SparseFormatErrorKind)
Indicates SparseFormatError while creating the sparse matrix.
Examples
let str = r#"
%%matrixmarket matrix coordinate real general
1 1 1
4 2 10
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),
MatrixMarketErrorKind::SparseFormatError(SparseFormatErrorKind::IndexOutOfBounds));DiagonalError
Indicates that a wrong diagonal element has been provided to the matrix.
Examples
let str = r#"
%%matrixmarket matrix coordinate real skew-symmetric
% skew-symmetric matrix can't have element on diagonal
5 5 2
1 1 10
2 1 5
"#;
let matrix_result = load_coo_from_matrix_market_str::<f64>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::DiagonalError);
let str = r#"
%%matrixmarket matrix coordinate complex hermitian
% hermitian matrix diagonal element must be a real number
5 5 2
1 1 10 2
2 1 5 2
"#;
let matrix_result = load_coo_from_matrix_market_str::<Complex<f64>>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::DiagonalError);Here the skew matrix shouldn’t have an element on the diagonal.
IOError(ErrorKind)
Indicates an IO error while reading the data from file.
Examples
let matrix_result = load_coo_from_matrix_market_file::<f64,_>("matrix.mtx");
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::IOError(std::io::ErrorKind::NotFound));NotLowerTriangle
Indicates that a (skew-)symmetric (or hermitian) matrix is not a lower triangular matrix.
Examples
let str = r#"
%%matrixmarket matrix coordinate integer symmetric
5 5 2
1 1 10
2 3 5
"#;
let matrix_result = load_coo_from_matrix_market_str::<i32>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::NotLowerTriangle);NonSquare
Indicates that a (skew-)symmetric (or hermitian) matrix is not a square matrix.
Examples
let str = r#"
%%matrixmarket matrix coordinate integer symmetric
5 4 2
1 1 10
3 2 5
"#;
let matrix_result = load_coo_from_matrix_market_str::<i32>(str);
assert_eq!(matrix_result.is_err(), true);
assert_eq!(matrix_result.unwrap_err().kind(),MatrixMarketErrorKind::NonSquare);Trait Implementations
sourceimpl Clone for MatrixMarketErrorKind
impl Clone for MatrixMarketErrorKind
sourcefn clone(&self) -> MatrixMarketErrorKind
fn clone(&self) -> MatrixMarketErrorKind
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Debug for MatrixMarketErrorKind
impl Debug for MatrixMarketErrorKind
sourceimpl PartialEq<MatrixMarketErrorKind> for MatrixMarketErrorKind
impl PartialEq<MatrixMarketErrorKind> for MatrixMarketErrorKind
sourcefn eq(&self, other: &MatrixMarketErrorKind) -> bool
fn eq(&self, other: &MatrixMarketErrorKind) -> bool
This method tests for self and other values to be equal, and is used
by ==. Read more
sourcefn ne(&self, other: &MatrixMarketErrorKind) -> bool
fn ne(&self, other: &MatrixMarketErrorKind) -> bool
This method tests for !=.
impl Copy for MatrixMarketErrorKind
impl StructuralPartialEq for MatrixMarketErrorKind
Auto Trait Implementations
impl RefUnwindSafe for MatrixMarketErrorKind
impl Send for MatrixMarketErrorKind
impl Sync for MatrixMarketErrorKind
impl Unpin for MatrixMarketErrorKind
impl UnwindSafe for MatrixMarketErrorKind
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self is actually part of its subset T (and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self to the equivalent element of its superset.