use chrono::ParseError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum QSError {
#[error("Not found error: {0}")]
NotFoundErr(String),
#[error("Date parsing error: {0}")]
DateParsingErr(#[from] ParseError),
#[error("Period parsing error: {0}")]
PeriodParsingErr(String),
#[error("Period operation error: {0}")]
PeriodOperationErr(String),
#[error("MakeSchedule error: {0}")]
MakeScheduleErr(String),
#[error("Evaluation error: {0}")]
EvaluationErr(String),
#[error("Serialization error: {0}")]
SerializationErr(String),
#[error("Deserialization error: {0}")]
DeserializationErr(String),
#[error("Value not set error: {0}")]
ValueNotSetErr(String),
#[error("Invalid value error: {0}")]
InvalidValueErr(String),
#[error("Solver error: {0}")]
SolverErr(String),
#[error("{0}")]
NotImplementedErr(String),
#[error("Interpolation error {0}")]
InterpolationErr(String),
#[error("Node error: {0}")]
NodeError(String),
#[error("Tape error: {0}")]
TapeError(String),
#[error("AD Real error: {0}")]
DualFwdError(String),
#[error("Node not indexed in tape")]
NodeNotIndexedInTapeErr,
#[error("{0}")]
UnexpectedErr(String),
#[error("Quote parsing error: {0}")]
QuoteParsingErr(String),
#[error("Instrument resolution error: {0}")]
InstrumentResolutionErr(String),
}
impl From<std::convert::Infallible> for QSError {
fn from(never: std::convert::Infallible) -> Self {
match never {}
}
}
pub type Result<T> = std::result::Result<T, QSError>;