pub use polyvers_macros::versioned;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("unknown version `{requested}`; known versions: {known:?}")]
UnknownVersion {
requested: String,
known: &'static [&'static str],
},
#[error("format error: {0}")]
Format(Box<dyn std::error::Error + Send + Sync>),
}
impl Error {
pub fn unknown_version(requested: &str, known: &'static [&'static str]) -> Self {
Self::UnknownVersion {
requested: requested.to_owned(),
known,
}
}
pub fn format<E>(err: E) -> Self
where
E: std::error::Error + Send + Sync + 'static,
{
Self::Format(Box::new(err))
}
}