pub mod inmem;
use std::error::Error;
use std::hash::Hash;
use async_trait::async_trait;
use serde::Serialize;
use serde::de::DeserializeOwned;
#[async_trait]
pub trait Config: Send + Sync {
type StaticConfigHandle: Send;
type KeyType: Hash + Send + Sync;
type ValueType: Serialize + DeserializeOwned + Send + Sync + Clone;
type Error: Error + Send + Sync;
async fn new(handle: Self::StaticConfigHandle) -> Result<Self, Self::Error>
where
Self: Sized;
async fn set(&mut self, key: Self::KeyType, value: Self::ValueType) -> Result<(), Self::Error>;
async fn set_bulk(
&mut self,
values: Vec<(Self::KeyType, Self::ValueType)>,
) -> Result<(), Self::Error>;
async fn get(&self, key: Self::KeyType) -> Result<Self::ValueType, Self::Error>;
}