use serde::de::DeserializeOwned;
use serde::Serialize;
use crate::UnversionizeError;
pub trait Version: Sized {
type Ref<'vers>: From<&'vers Self> + Serialize
where
Self: 'vers;
type Owned: From<Self> + TryInto<Self, Error = UnversionizeError> + DeserializeOwned + Serialize;
}
pub trait VersionsDispatch<Unversioned>: Sized {
type Ref<'vers>: From<&'vers Unversioned> + Serialize
where
Unversioned: 'vers;
type Owned: From<Unversioned>
+ TryInto<Unversioned, Error = UnversionizeError>
+ DeserializeOwned
+ Serialize;
}