rust_optimal_transport/
error.rs

1use crate::exact;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum OTError {
6    #[error(
7        "Sample weight dimensions, source distribution \
8            {dim_a:?} and target distribution {dim_b:?}, do \
9            not match loss matrix dimensions, ({dim_m_0:?}, {dim_m_1:?})"
10    )]
11    WeightDimensionError {
12        dim_a: usize,
13        dim_b: usize,
14        dim_m_0: usize,
15        dim_m_1: usize,
16    },
17
18    #[error("Exact solver failed. ")]
19    ExactOTError {
20        #[from]
21        source: exact::FastTransportErrorCode,
22    },
23
24    #[error("Invalid argument: '{0}'")]
25    ArgError(String),
26
27    #[error(transparent)]
28    Other(#[from] anyhow::Error),
29}