use thiserror::Error;
#[derive(Debug, Error)]
pub enum ExpirationDateError {
#[error("parse error: {0}")]
ParseError(String),
#[error("conversion error from {from_type} to {to_type}: {reason}")]
ConversionError {
from_type: String,
to_type: String,
reason: String,
},
#[error("invalid datetime: {0}")]
InvalidDateTime(String),
#[error("positive error: {0}")]
PositiveError(#[from] positive::error::PositiveError),
#[error("chrono parse error: {0}")]
ChronoParseError(#[from] chrono::ParseError),
#[error("parse int error: {0}")]
ParseIntError(#[from] std::num::ParseIntError),
#[error("arithmetic overflow: {0}")]
ArithmeticOverflow(String),
}
impl From<String> for ExpirationDateError {
fn from(s: String) -> Self {
Self::ParseError(s)
}
}
impl From<&str> for ExpirationDateError {
fn from(s: &str) -> Self {
Self::ParseError(s.to_string())
}
}