Enum 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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

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

Source§

fn clone(&self) -> MatrixMarketErrorKind

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MatrixMarketErrorKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for MatrixMarketErrorKind

Source§

fn eq(&self, other: &MatrixMarketErrorKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for MatrixMarketErrorKind

Source§

impl StructuralPartialEq for MatrixMarketErrorKind

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

OSZAR »