pub trait Adapter: Send + Sync + Debug + Unpin + 'static {
type Scanner: Scan;
// Required methods
fn info(&self) -> Info;
fn get(
&self,
path: &str,
) -> impl Future<Output = Result<Option<Buffer>>> + MaybeSend;
fn set(
&self,
path: &str,
value: Buffer,
) -> impl Future<Output = Result<()>> + MaybeSend;
fn delete(&self, path: &str) -> impl Future<Output = Result<()>> + MaybeSend;
// Provided methods
fn blocking_get(&self, path: &str) -> Result<Option<Buffer>> { ... }
fn blocking_set(&self, path: &str, value: Buffer) -> Result<()> { ... }
fn blocking_delete(&self, path: &str) -> Result<()> { ... }
fn scan(
&self,
path: &str,
) -> impl Future<Output = Result<Self::Scanner>> + MaybeSend { ... }
fn blocking_scan(&self, path: &str) -> Result<Vec<String>> { ... }
fn append(
&self,
path: &str,
value: &[u8],
) -> impl Future<Output = Result<()>> + MaybeSend { ... }
fn blocking_append(&self, path: &str, value: &[u8]) -> Result<()> { ... }
}
Expand description
KvAdapter is the adapter to underlying kv services.
By implement this trait, any kv service can work as an OpenDAL Service.
Required Associated Types§
Required Methods§
sourcefn get(
&self,
path: &str,
) -> impl Future<Output = Result<Option<Buffer>>> + MaybeSend
fn get( &self, path: &str, ) -> impl Future<Output = Result<Option<Buffer>>> + MaybeSend
Get a key from service.
- return
Ok(None)
if this key is not exist.
Provided Methods§
sourcefn blocking_delete(&self, path: &str) -> Result<()>
fn blocking_delete(&self, path: &str) -> Result<()>
Delete a key from service in blocking way.
- return
Ok(())
even if this key is not exist.
sourcefn scan(
&self,
path: &str,
) -> impl Future<Output = Result<Self::Scanner>> + MaybeSend
fn scan( &self, path: &str, ) -> impl Future<Output = Result<Self::Scanner>> + MaybeSend
Scan a key prefix to get all keys that start with this key.
sourcefn blocking_scan(&self, path: &str) -> Result<Vec<String>>
fn blocking_scan(&self, path: &str) -> Result<Vec<String>>
Scan a key prefix to get all keys that start with this key in blocking way.
Object Safety§
This trait is not object safe.