use semver::Version;
use super::transform::LensError;
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum UpcastError {
NoPath {
product_group: String,
from: Version,
to: Version,
},
NotAnUpcast { from: Version, to: Version },
Transform(LensError),
BadVersion(String),
}
impl std::fmt::Display for UpcastError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::NoPath {
product_group,
from,
to,
} => {
write!(f, "no lens path for {product_group} {from} → {to}")
}
Self::NotAnUpcast { from, to } => {
write!(
f,
"{to} is not an upcast of {from} — downcast is unsupported"
)
}
Self::Transform(e) => write!(f, "{e}"),
Self::BadVersion(v) => write!(f, "'{v}' is not a valid semver version"),
}
}
}
impl std::error::Error for UpcastError {}