use geo_types::Coord;
#[derive(Debug, PartialEq)]
#[non_exhaustive]
pub enum PolylineError {
LongitudeCoordError {
coord: f64,
idx: usize,
},
LatitudeCoordError {
coord: f64,
idx: usize,
},
NoLongError {
idx: usize,
},
DecodeError {
idx: usize,
},
EncodeToCharError,
CoordEncodingError {
coord: Coord<f64>,
idx: usize,
},
}
impl std::error::Error for PolylineError {}
impl std::fmt::Display for PolylineError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
PolylineError::LongitudeCoordError { coord, idx } => {
write!(f, "longitude out of bounds: {} at position {}", coord, idx)
}
PolylineError::LatitudeCoordError { coord, idx } => {
write!(f, "latitude out of bounds: {} at position {}", coord, idx)
}
PolylineError::DecodeError { idx } => {
write!(f, "cannot decode character at index {}", idx)
}
PolylineError::NoLongError { idx } => {
write!(f, "no longitude to go with latitude at index: {}", idx)
}
PolylineError::EncodeToCharError => write!(f, "couldn't encode character"),
PolylineError::CoordEncodingError { coord, idx } => {
write!(
f,
"the coordinate {:?} at index: {} could not be encoded",
coord, idx
)
}
}
}
}