use std::fmt::Debug;
use std::ops::Deref;
use std::sync::Arc;
pub use omnia::FutureResult;
pub trait Bucket: Debug + Send + Sync + 'static {
fn name(&self) -> &'static str;
fn get(&self, key: String) -> FutureResult<Option<Vec<u8>>>;
fn set(&self, key: String, value: Vec<u8>) -> FutureResult<()>;
fn delete(&self, key: String) -> FutureResult<()>;
fn exists(&self, key: String) -> FutureResult<bool>;
fn keys(&self) -> FutureResult<Vec<String>>;
}
#[derive(Clone, Debug)]
pub struct BucketProxy(pub Arc<dyn Bucket>);
impl Deref for BucketProxy {
type Target = Arc<dyn Bucket>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
#[derive(Clone, Debug)]
pub struct Cas {
pub key: String,
pub current: Option<Vec<u8>>,
}