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