rsdiff_core/error/kinds/
propagation.rs

1/*
2    Appellation: propagation <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5use super::ErrorType;
6#[cfg(feature = "serde")]
7use serde::{Deserialize, Serialize};
8use strum::{Display, EnumCount, EnumIs, EnumIter, EnumString, VariantNames};
9
10#[derive(
11    Clone,
12    Copy,
13    Debug,
14    Display,
15    EnumCount,
16    EnumIs,
17    Eq,
18    Hash,
19    Ord,
20    PartialEq,
21    PartialOrd,
22    VariantNames,
23)]
24#[cfg_attr(
25    feature = "serde",
26    derive(Deserialize, Serialize,),
27    serde(rename_all = "snake_case")
28)]
29#[strum(serialize_all = "snake_case")]
30pub enum ModuleError {
31    Predict(PredictError),
32}
33
34impl std::error::Error for ModuleError {}
35
36impl ErrorType for ModuleError {
37    type Kind = ModuleError;
38
39    fn kind(&self) -> &Self::Kind {
40        self
41    }
42
43    fn name(&self) -> String {
44        self.to_string()
45    }
46}
47
48#[derive(
49    Clone,
50    Copy,
51    Debug,
52    Display,
53    EnumCount,
54    EnumIs,
55    EnumIter,
56    EnumString,
57    Eq,
58    Hash,
59    Ord,
60    PartialEq,
61    PartialOrd,
62    VariantNames,
63)]
64#[cfg_attr(
65    feature = "serde",
66    derive(Deserialize, Serialize,),
67    serde(rename_all = "snake_case")
68)]
69#[strum(serialize_all = "snake_case")]
70pub enum PredictError {
71    Arithmetic,
72    NumericalError,
73}
74
75impl std::error::Error for PredictError {}
76
77#[derive(
78    Clone,
79    Copy,
80    Debug,
81    Display,
82    EnumCount,
83    EnumIs,
84    EnumIter,
85    EnumString,
86    Eq,
87    Hash,
88    Ord,
89    PartialEq,
90    PartialOrd,
91    VariantNames,
92)]
93#[cfg_attr(
94    feature = "serde",
95    derive(Deserialize, Serialize,),
96    serde(rename_all = "snake_case")
97)]
98#[strum(serialize_all = "snake_case")]
99pub enum GradientError {
100    Backward,
101    Forward,
102}
103
104impl std::error::Error for GradientError {}