concision_core/
error.rs

1/*
2    Appellation: error <module>
3    Contrib: @FL03
4*/
5
6/// a type alias for a [Result] with a [Error]
7pub type Result<T = ()> = core::result::Result<T, Error>;
8
9#[derive(Debug, thiserror::Error)]
10pub enum Error {
11    #[error("Unknown Error: {0}")]
12    Unknown(&'static str),
13    #[error(transparent)]
14    MathError(#[from] concision_math::MathematicalError),
15    #[error(transparent)]
16    PadError(#[from] crate::ops::pad::error::PadError),
17    #[error(transparent)]
18    ParamError(#[from] crate::params::error::ParamsError),
19    #[error(transparent)]
20    ShapeError(#[from] ndarray::ShapeError),
21    #[cfg(feature = "alloc")]
22    #[error(transparent)]
23    BoxError(#[from] alloc::boxed::Box<dyn core::error::Error + Send + Sync + 'static>),
24    #[cfg(feature = "anyhow")]
25    #[error(transparent)]
26    Other(#[from] anyhow::Error),
27    #[cfg(feature = "serde")]
28    #[error(transparent)]
29    DeserializeError(#[from] serde::de::value::Error),
30    #[cfg(feature = "std")]
31    #[error(transparent)]
32    IoError(#[from] std::io::Error),
33    #[cfg(feature = "rand")]
34    #[error(transparent)]
35    UniformError(#[from] rand_distr::uniform::Error),
36}
37
38impl From<String> for Error {
39    fn from(value: String) -> Self {
40        Self::Unknown(Box::leak(value.into_boxed_str()))
41    }
42}
43
44impl From<&'static str> for Error {
45    fn from(value: &'static str) -> Self {
46        Self::Unknown(value)
47    }
48}