use optionstratlib_backtest::error::BacktestError;
use optionstratlib_core::error::DecimalError;
use optionstratlib_math::error::{CurveError, SurfaceError};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum GraphError {
#[error("Render error: {0}")]
Render(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error(transparent)]
Curve(CurveError),
#[error(transparent)]
Surface(SurfaceError),
#[error(transparent)]
Decimal(Box<DecimalError>),
#[error(transparent)]
Backtest(Box<BacktestError>),
}
impl From<BacktestError> for GraphError {
#[cold]
#[inline(never)]
fn from(err: BacktestError) -> Self {
GraphError::Backtest(Box::new(err))
}
}
impl From<DecimalError> for GraphError {
#[cold]
#[inline(never)]
fn from(err: DecimalError) -> Self {
GraphError::Decimal(Box::new(err))
}
}
impl From<CurveError> for GraphError {
#[cold]
#[inline(never)]
fn from(err: CurveError) -> Self {
GraphError::Curve(err)
}
}
impl From<SurfaceError> for GraphError {
#[cold]
#[inline(never)]
fn from(err: SurfaceError) -> Self {
GraphError::Surface(err)
}
}