#[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§
Source§impl Clone for MatrixMarketErrorKind
impl Clone for MatrixMarketErrorKind
Source§fn clone(&self) -> MatrixMarketErrorKind
fn clone(&self) -> MatrixMarketErrorKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for MatrixMarketErrorKind
impl Debug for MatrixMarketErrorKind
Source§impl PartialEq for MatrixMarketErrorKind
impl PartialEq for MatrixMarketErrorKind
impl Copy for MatrixMarketErrorKind
impl StructuralPartialEq for MatrixMarketErrorKind
Auto Trait Implementations§
impl Freeze for MatrixMarketErrorKind
impl RefUnwindSafe for MatrixMarketErrorKind
impl Send for MatrixMarketErrorKind
impl Sync for MatrixMarketErrorKind
impl Unpin for MatrixMarketErrorKind
impl UnwindSafe for MatrixMarketErrorKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.