1pub 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}