use std::fmt;
#[non_exhaustive]
#[derive(Debug)]
pub enum YomitokiError {
ParseError(chematic::smiles::SmilesError),
InvalidConfiguration(String),
ModelLoadError(String),
}
impl fmt::Display for YomitokiError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
YomitokiError::ParseError(e) => write!(f, "failed to parse molecule: {e}"),
YomitokiError::InvalidConfiguration(msg) => write!(f, "invalid configuration: {msg}"),
YomitokiError::ModelLoadError(msg) => write!(f, "could not load model: {msg}"),
}
}
}
impl std::error::Error for YomitokiError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
YomitokiError::ParseError(e) => Some(e),
YomitokiError::InvalidConfiguration(_) => None,
YomitokiError::ModelLoadError(_) => None,
}
}
}
impl From<chematic::smiles::SmilesError> for YomitokiError {
fn from(e: chematic::smiles::SmilesError) -> Self {
YomitokiError::ParseError(e)
}
}