use std::fmt;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum ConicValidationError {
InvalidEccentricity,
InvalidSemiMajorAxis,
InvalidPeriapsisDistance,
ParabolicSemiMajorAxis,
InvalidOrientation,
}
impl fmt::Display for ConicValidationError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidEccentricity => write!(f, "invalid eccentricity"),
Self::InvalidSemiMajorAxis => write!(f, "invalid semi-major axis"),
Self::InvalidPeriapsisDistance => write!(f, "invalid periapsis distance"),
Self::ParabolicSemiMajorAxis => {
write!(
f,
"semi-major axis is undefined for parabolic conics (e == 1)"
)
}
Self::InvalidOrientation => write!(f, "orientation angles must be finite"),
}
}
}
impl std::error::Error for ConicValidationError {}