use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum MastishkError {
#[error("neurotransmitter level out of range: {name} = {value} (expected {min}..={max})")]
LevelOutOfRange {
name: String,
value: f32,
min: f32,
max: f32,
},
#[error("invalid circuit: {0}")]
InvalidCircuit(String),
#[error("invalid sleep transition: {from:?} -> {to:?}")]
InvalidSleepTransition { from: String, to: String },
#[error("negative time delta: {0}")]
NegativeTimeDelta(f32),
#[error("invalid drug parameter: {0}")]
InvalidDrugParameter(String),
}
#[inline]
pub(crate) fn validate_dt(dt: f32) -> Result<(), MastishkError> {
if dt < 0.0 {
Err(MastishkError::NegativeTimeDelta(dt))
} else {
Ok(())
}
}