use core::error::Error;
use core::fmt::{self, Display, Formatter};
use core::num::ParseIntError;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum CoordinateParseError {
NotTwoNumbers,
InvalidXValue(ParseIntError),
InvalidYValue(ParseIntError),
}
impl Display for CoordinateParseError {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
Self::NotTwoNumbers => write!(f, "not two numbers"),
Self::InvalidXValue(error) => write!(f, "invalid x value: {error}"),
Self::InvalidYValue(error) => write!(f, "invalid y value: {error}"),
}
}
}
impl Error for CoordinateParseError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
Self::NotTwoNumbers => None,
Self::InvalidXValue(error) | Self::InvalidYValue(error) => Some(error),
}
}
}