pub trait Database<H: Clone>: Send + Sync {
    fn get(&self, col: ColumnId, key: &[u8]) -> Option<Vec<u8>>;
fn lookup(&self, hash: &H) -> Option<Vec<u8>>; fn commit(&self, transaction: Transaction<H>) -> Result<()> { ... }
fn commit_ref<'a>(
        &self,
        transaction: &mut dyn Iterator<Item = ChangeRef<'a, H>>
    ) -> Result<()> { ... }
fn contains(&self, col: ColumnId, key: &[u8]) -> bool { ... }
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

Retrieve the value previously stored against key or None if key is not currently in the database.

Retrieve the first preimage previously stored for hash or None if no preimage is currently stored.

Provided methods

Commit the transaction to the database atomically. Any further calls to get or lookup will reflect the new state.

Commit the transaction to the database atomically. Any further calls to get or lookup will reflect the new state.

Check if the value exists in the database without retrieving it.

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

Set the value of key in col to value, replacing anything that is there currently.

Remove the value of key in col.

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

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.

Release the preimage of hash from the database. An equal number of these to the number of corresponding stores must have been given before it is legal for Database::lookup to be unable to provide the preimage.

Trait Implementations

Formats the value using the given formatter. Read more

Implementors