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.
Trait Implementations§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".