use crate::constants::internal::INITIAL_VERSION;
use crate::types::state::{Version, Versioned};
pub fn next_version<T>(current: &Option<T>) -> Version
where
T: Versioned,
{
match current {
None => INITIAL_VERSION,
Some(current) => next_version_from(current),
}
}
pub fn next_version_from<T>(current: &T) -> Version
where
T: Versioned,
{
let version = current.version().unwrap_or_default();
if version == u64::MAX {
INITIAL_VERSION
} else {
version + 1
}
}