omnia_wasi_keyvalue/host/
resource.rs1use std::fmt::Debug;
2use std::ops::Deref;
3use std::sync::Arc;
4
5pub use omnia::FutureResult;
6
7pub trait Bucket: Debug + Send + Sync + 'static {
10 fn name(&self) -> &'static str;
12
13 fn get(&self, key: String) -> FutureResult<Option<Vec<u8>>>;
15
16 fn set(&self, key: String, value: Vec<u8>) -> FutureResult<()>;
18
19 fn delete(&self, key: String) -> FutureResult<()>;
21
22 fn exists(&self, key: String) -> FutureResult<bool>;
24
25 fn keys(&self) -> FutureResult<Vec<String>>;
27}
28
29#[derive(Clone, Debug)]
31pub struct BucketProxy(pub Arc<dyn Bucket>);
32
33impl Deref for BucketProxy {
34 type Target = Arc<dyn Bucket>;
35
36 fn deref(&self) -> &Self::Target {
37 &self.0
38 }
39}
40
41#[derive(Clone, Debug)]
43pub struct Cas {
44 pub key: String,
46
47 pub current: Option<Vec<u8>>,
49}