pub trait Adapter: Send + Sync + Debug + Unpin + 'static {
// Required methods
fn info(&self) -> Info;
fn get(
&self,
path: &str,
) -> impl Future<Output = Result<Option<Value>>> + MaybeSend;
fn blocking_get(&self, path: &str) -> Result<Option<Value>>;
fn set(
&self,
path: &str,
value: Value,
) -> impl Future<Output = Result<()>> + MaybeSend;
fn blocking_set(&self, path: &str, value: Value) -> Result<()>;
fn delete(&self, path: &str) -> impl Future<Output = Result<()>> + MaybeSend;
fn blocking_delete(&self, path: &str) -> Result<()>;
// Provided methods
fn scan(
&self,
path: &str,
) -> impl Future<Output = Result<Vec<String>>> + MaybeSend { ... }
fn blocking_scan(&self, path: &str) -> Result<Vec<String>> { ... }
}
Expand description
Adapter is the typed adapter to underlying kv services.
By implement this trait, any kv service can work as an OpenDAL Service.
§Notes
typed_kv::Adapter
is the typed version of kv::Adapter
. It’s more
efficient if the underlying kv service can store data with its type. For
example, we can store Bytes
along with its metadata so that we don’t
need to serialize/deserialize it when we get it from the service.
Ideally, we should use typed_kv::Adapter
instead of kv::Adapter
for
in-memory rust libs like moka and dashmap.
Required Methods§
sourcefn get(
&self,
path: &str,
) -> impl Future<Output = Result<Option<Value>>> + MaybeSend
fn get( &self, path: &str, ) -> impl Future<Output = Result<Option<Value>>> + MaybeSend
Get a value from adapter.
sourcefn set(
&self,
path: &str,
value: Value,
) -> impl Future<Output = Result<()>> + MaybeSend
fn set( &self, path: &str, value: Value, ) -> impl Future<Output = Result<()>> + MaybeSend
Set a value into adapter.
sourcefn delete(&self, path: &str) -> impl Future<Output = Result<()>> + MaybeSend
fn delete(&self, path: &str) -> impl Future<Output = Result<()>> + MaybeSend
Delete a value from adapter.
sourcefn blocking_delete(&self, path: &str) -> Result<()>
fn blocking_delete(&self, path: &str) -> Result<()>
Delete a value from adapter.
Provided Methods§
Object Safety§
This trait is not object safe.