use std::fmt;
use crate::assignment::error::AssignmentError;
use crate::gmns::error::GraphError;
use crate::mode_choice::error::ModeChoiceError;
use crate::pipeline::error::PipelineError;
use crate::trip_distribution::error::TripDistributionError;
use crate::trip_generation::error::TripGenerationError;
#[derive(Debug, Clone)]
pub enum SimError {
Graph(GraphError),
TripGeneration(TripGenerationError),
TripDistribution(TripDistributionError),
ModeChoice(ModeChoiceError),
Assignment(AssignmentError),
Pipeline(PipelineError),
}
impl fmt::Display for SimError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SimError::Graph(e) => write!(f, "graph error: {}", e),
SimError::TripGeneration(e) => write!(f, "trip generation error: {}", e),
SimError::TripDistribution(e) => write!(f, "trip distribution error: {}", e),
SimError::ModeChoice(e) => write!(f, "mode choice error: {}", e),
SimError::Assignment(e) => write!(f, "assignment error: {}", e),
SimError::Pipeline(e) => write!(f, "pipeline error: {}", e),
}
}
}
impl From<GraphError> for SimError {
fn from(e: GraphError) -> Self {
SimError::Graph(e)
}
}
impl From<TripGenerationError> for SimError {
fn from(e: TripGenerationError) -> Self {
SimError::TripGeneration(e)
}
}
impl From<TripDistributionError> for SimError {
fn from(e: TripDistributionError) -> Self {
SimError::TripDistribution(e)
}
}
impl From<ModeChoiceError> for SimError {
fn from(e: ModeChoiceError) -> Self {
SimError::ModeChoice(e)
}
}
impl From<AssignmentError> for SimError {
fn from(e: AssignmentError) -> Self {
SimError::Assignment(e)
}
}
impl From<PipelineError> for SimError {
fn from(e: PipelineError) -> Self {
SimError::Pipeline(e)
}
}