pub trait Storage {
// Required methods
fn get(&self, key: &[u8]) -> Option<Vec<u8, Global>>;
fn range<'a>(
&'a self,
start: Option<&[u8]>,
end: Option<&[u8]>,
order: Order
) -> Box<dyn Iterator<Item = (Vec<u8, Global>, Vec<u8, Global>)> + 'a, Global>;
fn set(&mut self, key: &[u8], value: &[u8]);
fn remove(&mut self, key: &[u8]);
}
Expand description
Storage provides read and write access to a persistent storage.
If you only want to provide read access, provide &Storage
Required Methods§
sourcefn get(&self, key: &[u8]) -> Option<Vec<u8, Global>>
fn get(&self, key: &[u8]) -> Option<Vec<u8, Global>>
Returns None when key does not exist.
Returns Some(Vec
Note: Support for differentiating between a non-existent key and a key with empty value is not great yet and might not be possible in all backends. But we’re trying to get there.
sourcefn range<'a>(
&'a self,
start: Option<&[u8]>,
end: Option<&[u8]>,
order: Order
) -> Box<dyn Iterator<Item = (Vec<u8, Global>, Vec<u8, Global>)> + 'a, Global>
fn range<'a>( &'a self, start: Option<&[u8]>, end: Option<&[u8]>, order: Order ) -> Box<dyn Iterator<Item = (Vec<u8, Global>, Vec<u8, Global>)> + 'a, Global>
Allows iteration over a set of key/value pairs, either forwards or backwards.
The bound start
is inclusive and end
is exclusive.
If start
is lexicographically greater than or equal to end
, an empty range is described, mo matter of the order.