pub mod atom;
pub mod basic;
pub mod db;
use std::sync::Arc;
pub use basic::{Delta, Value, EID};
pub use db::Database;
pub type MergeFn = dyn Send + Sync + Fn(&mut Value, &Delta) -> ();
pub type MergeFnClosure = Arc<MergeFn>;
pub type PropBucket = kv::Bucket<'static, EID, kv::Bincode<Value>>;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("Key [{0}] not exists.")]
KeyError(String),
#[error("Error from kv database.")]
KvError(#[from] kv::Error),
#[error("Error from sled database.")]
SledError(#[from] sled::Error),
#[error("Error when fmt str into marker.")]
OverflowError,
}