Skip to main content

Database

Trait Database 

Source
pub trait Database:
    Send
    + Sync
    + Debug {
    type TX: DbTx + Send + Sync + Debug + 'static;
    type TXMut: DbTxMut + DbTx + TableImporter + Send + Sync + Debug + 'static;

    // Required methods
    fn tx(&self) -> Result<Self::TX, DatabaseError>;
    fn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>;
    fn path(&self) -> PathBuf;
    fn oldest_reader_txnid(&self) -> Option<u64>;
    fn last_txnid(&self) -> Option<u64>;

    // Provided methods
    fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
       where F: FnOnce(&mut Self::TX) -> T { ... }
    fn update<T, F>(&self, f: F) -> Result<T, DatabaseError>
       where F: FnOnce(&Self::TXMut) -> T { ... }
}
Expand description

Main Database trait that can open read-only and read-write transactions.

Sealed trait which cannot be implemented by 3rd parties, exposed only for consumption.

Required Associated Types§

Source

type TX: DbTx + Send + Sync + Debug + 'static

Read-Only database transaction

Source

type TXMut: DbTxMut + DbTx + TableImporter + Send + Sync + Debug + 'static

Read-Write database transaction

Required Methods§

Source

fn tx(&self) -> Result<Self::TX, DatabaseError>

Create read only transaction.

Source

fn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>

Create read write transaction only possible if database is open with write access.

Source

fn path(&self) -> PathBuf

Returns the path to the database directory.

Source

fn oldest_reader_txnid(&self) -> Option<u64>

Returns the transaction ID of the oldest active reader, if available.

This is the committed txnid of the snapshot the reader is pinned to, not a unique per-reader identifier, so multiple readers can report the same txnid.

Used to check whether stale readers from a previous write transaction have completed. Returns None if no readers are active or the backend does not support this query.

Source

fn last_txnid(&self) -> Option<u64>

Returns the ID of the most recently committed transaction, if available.

Provided Methods§

Source

fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
where F: FnOnce(&mut Self::TX) -> T,

Takes a function and passes a read-only transaction into it, making sure it’s closed in the end of the execution.

Source

fn update<T, F>(&self, f: F) -> Result<T, DatabaseError>
where F: FnOnce(&Self::TXMut) -> T,

Takes a function and passes a write-read transaction into it, making sure it’s committed in the end of the execution.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<DB> Database for &DB
where DB: Database,

Source§

impl<DB> Database for Arc<DB>
where DB: Database,

Implementors§

Source§

impl Database for DatabaseEnv

Available on crate feature mdbx only.
Source§

impl Database for DatabaseMock

Source§

impl<DB: Database> Database for TempDatabase<DB>

Available on crate features test-utils only.
Source§

type TX = <DB as Database>::TX

Source§

type TXMut = <DB as Database>::TXMut