pub mod counter;
pub mod append_only;
pub trait Operation: Sized {
type Value;
fn default() -> Self::Value;
fn deserialize(value: String) -> Result<Self, Box<dyn std::error::Error>>;
fn serialize(&self) -> Result<String, Box<dyn std::error::Error>>;
fn apply(&self, value: Self::Value) -> Self::Value;
}