pub trait Database<H: Clone>: Send + Sync {
// Required methods
fn get(&self, col: ColumnId, key: &[u8]) -> Option<Vec<u8>>;
fn lookup(&self, hash: &H) -> Option<Vec<u8>>;
// Provided methods
fn commit(&self, transaction: Transaction<H>) -> Result<()> { ... }
fn commit_ref<'a>(
&self,
transaction: &mut dyn Iterator<Item = ChangeRef<'a, H>>,
) -> Result<()> { ... }
fn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8])) { ... }
fn set(&self, col: ColumnId, key: &[u8], value: &[u8]) -> Result<()> { ... }
fn remove(&self, col: ColumnId, key: &[u8]) -> Result<()> { ... }
fn with_lookup(&self, hash: &H, f: &mut dyn FnMut(&[u8])) { ... }
fn store(&self, hash: &H, preimage: &[u8]) -> Result<()> { ... }
fn release(&self, hash: &H) -> Result<()> { ... }
}Required Methods§
Provided Methods§
Sourcefn commit(&self, transaction: Transaction<H>) -> Result<()>
fn commit(&self, transaction: Transaction<H>) -> Result<()>
Commit the transaction to the database atomically. Any further calls to get or lookup
will reflect the new state.
Sourcefn commit_ref<'a>(
&self,
transaction: &mut dyn Iterator<Item = ChangeRef<'a, H>>,
) -> Result<()>
fn commit_ref<'a>( &self, transaction: &mut dyn Iterator<Item = ChangeRef<'a, H>>, ) -> Result<()>
Commit the transaction to the database atomically. Any further calls to get or lookup
will reflect the new state.
Sourcefn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8]))
fn with_get(&self, col: ColumnId, 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
Sourcefn set(&self, col: ColumnId, key: &[u8], value: &[u8]) -> Result<()>
fn set(&self, col: ColumnId, key: &[u8], value: &[u8]) -> Result<()>
Set the value of key in col to value, replacing anything that is there currently.
Sourcefn with_lookup(&self, hash: &H, f: &mut dyn FnMut(&[u8]))
fn with_lookup(&self, hash: &H, f: &mut dyn FnMut(&[u8]))
Call f with the preimage stored for hash and return the result, or None if no preimage
is currently stored.
This may be faster than lookup since it doesn’t allocate.
Use with_lookup helper function if you need f to return a value from f
Sourcefn store(&self, hash: &H, preimage: &[u8]) -> Result<()>
fn store(&self, hash: &H, preimage: &[u8]) -> Result<()>
Store the preimage of hash into the database, so that it may be looked up later with
Database::lookup. This may be called multiple times, but Database::lookup but subsequent
calls will ignore preimage and simply increase the number of references on hash.