use {
crate::{Datum, UniqueId},
core::{fmt::Debug, hash::Hash},
derive_more::{Deref, Display},
serde::{Serialize, de::DeserializeOwned},
};
pub type StoreId = UniqueId;
#[derive(
Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Deref, Display,
)]
pub struct Version(pub crate::groups::Index);
pub trait Value: Clone + Datum + Sync {}
impl<T> Value for T where T: Clone + Datum + Sync {}
pub trait Key: Clone + Datum + Hash + PartialEq + Eq + Sync {}
impl<T> Key for T where T: Clone + Datum + Hash + PartialEq + Eq + Sync {}
pub trait OrderedKey: Key + Ord {}
impl<T: Key + Ord> OrderedKey for T {}