use thiserror::Error;
#[derive(Debug, Clone, PartialEq, Eq, Error)]
pub enum SimulationError {
#[error("Simulation has been shut down")]
SimulationShutdown,
#[error("Invalid simulation state: {0}")]
InvalidState(String),
#[error("I/O error: {0}")]
IoError(String),
#[error("Settle timeout: {pending_events} events still pending after {elapsed:?}")]
SettleTimeout {
pending_events: usize,
elapsed: std::time::Duration,
},
}
pub type SimulationResult<T> = Result<T, SimulationError>;
impl From<std::io::Error> for SimulationError {
fn from(err: std::io::Error) -> Self {
SimulationError::IoError(err.to_string())
}
}