use num_integer::Integer;
use num_traits::One;
use std::hash::Hash;
pub mod map;
pub use self::map::*;
pub mod register;
pub use self::register::*;
pub mod set;
pub use self::set::*;
pub trait CausalLength: Integer + One + Ord + Copy + Eq {}
impl<T> CausalLength for T where T: Integer + One + Ord + Copy + Eq {}
pub trait Key: Eq + Hash + Clone {}
impl<T> Key for T where T: Eq + Hash + Clone {}
pub trait Value: Clone + Eq {}
impl<T> Value for T where T: Clone + Eq {}
pub trait TagT: Eq + Ord + Copy + Default {}
impl<T> TagT for T where T: Eq + Ord + Copy + Default {}