pub use crate::spec::version::{Version, CURRENT_VERSION, V1_0};
#[must_use]
#[inline]
pub fn is_backwards_compatible(since: Version) -> bool {
since <= CURRENT_VERSION
}
#[inline]
pub fn check_since_version(since: Version) -> Result<(), SinceVersionError> {
if since > CURRENT_VERSION {
return Err(SinceVersionError::FutureVersion {
declared: since,
current: CURRENT_VERSION,
});
}
Ok(())
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SinceVersionError {
FutureVersion {
declared: Version,
current: Version,
},
}
impl core::fmt::Display for SinceVersionError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Self::FutureVersion { declared, current } => write!(
f,
"since_version {declared:?} is ahead of CURRENT_VERSION {current:?}. \
Fix: either ship a version bump that makes declared become the current, \
or set since_version to CURRENT_VERSION."
),
}
}
}
impl core::error::Error for SinceVersionError {}