1use thiserror::Error;
7
8#[derive(Debug, Error)]
10pub enum ExpirationDateError {
11 #[error("parse error: {0}")]
13 ParseError(String),
14
15 #[error("conversion error from {from_type} to {to_type}: {reason}")]
17 ConversionError {
18 from_type: String,
20 to_type: String,
22 reason: String,
24 },
25
26 #[error("invalid datetime: {0}")]
28 InvalidDateTime(String),
29
30 #[error("positive error: {0}")]
32 PositiveError(#[from] positive::error::PositiveError),
33
34 #[error("chrono parse error: {0}")]
36 ChronoParseError(#[from] chrono::ParseError),
37
38 #[error("parse int error: {0}")]
40 ParseIntError(#[from] std::num::ParseIntError),
41
42 #[error("arithmetic overflow: {0}")]
44 ArithmeticOverflow(String),
45}
46
47impl From<String> for ExpirationDateError {
48 fn from(s: String) -> Self {
49 Self::ParseError(s)
50 }
51}
52
53impl From<&str> for ExpirationDateError {
54 fn from(s: &str) -> Self {
55 Self::ParseError(s.to_string())
56 }
57}