pub trait Database<H>: Send + Sync{
// Required methods
fn commit(&self, transaction: Transaction<H>) -> Result<(), DatabaseError>;
fn get(&self, col: u32, key: &[u8]) -> Option<Vec<u8>>;
// Provided methods
fn contains(&self, col: u32, key: &[u8]) -> bool { ... }
fn value_size(&self, col: u32, key: &[u8]) -> Option<usize> { ... }
fn with_get(&self, col: u32, key: &[u8], f: &mut dyn FnMut(&[u8])) { ... }
fn supports_ref_counting(&self) -> bool { ... }
fn sanitize_key(&self, _key: &mut Vec<u8>) { ... }
}
Required Methods§
Provided Methods§
fn contains(&self, col: u32, key: &[u8]) -> bool
fn contains(&self, col: u32, key: &[u8]) -> bool
Check if the value exists in the database without retrieving it.
fn value_size(&self, col: u32, key: &[u8]) -> Option<usize>
fn value_size(&self, col: u32, key: &[u8]) -> Option<usize>
Check value size in the database possibly without retrieving it.
fn with_get(&self, col: u32, key: &[u8], f: &mut dyn FnMut(&[u8]))
fn with_get(&self, col: u32, key: &[u8], f: &mut dyn FnMut(&[u8]))
Call f
with the value previously stored against key
.
This may be faster than get
since it doesn’t allocate.
Use with_get
helper function if you need f
to return a value from f
fn supports_ref_counting(&self) -> bool
fn supports_ref_counting(&self) -> bool
Check if database supports internal ref counting for state data.
For backwards compatibility returns false
by default.
fn sanitize_key(&self, _key: &mut Vec<u8>)
fn sanitize_key(&self, _key: &mut Vec<u8>)
Remove a possible path-prefix from the key.
Not all database implementations use a prefix for keys, so this function may be a noop.