use std::fmt::{Display, Formatter};
#[derive(Clone, Debug, PartialEq)]
pub enum RecognitionError {
InvalidMesh(String),
InvalidOptions(String),
InvalidSelection(String),
DegenerateData(String),
FitFailed {
surface: Option<&'static str>,
reason: String,
},
}
impl Display for RecognitionError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Self::InvalidMesh(message) => write!(f, "invalid mesh: {message}"),
Self::InvalidOptions(message) => write!(f, "invalid recognition options: {message}"),
Self::InvalidSelection(message) => write!(f, "invalid selection: {message}"),
Self::DegenerateData(message) => write!(f, "degenerate geometry: {message}"),
Self::FitFailed { surface, reason } => match surface {
Some(kind) => write!(f, "{kind} fit failed: {reason}"),
None => write!(f, "surface fit failed: {reason}"),
},
}
}
}
impl std::error::Error for RecognitionError {}