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
.