reth_db::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>;

    // Provided methods
    fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
       where F: FnOnce(&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.

Provided Methods§

Source

fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
where F: FnOnce(&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,

Source§

type TX = <DB as Database>::TX

Source§

type TXMut = <DB as Database>::TXMut

Source§

fn tx(&self) -> Result<<Arc<DB> as Database>::TX, DatabaseError>

Source§

fn tx_mut(&self) -> Result<<Arc<DB> as Database>::TXMut, DatabaseError>

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 feature test-utils only.
Source§

type TX = <DB as Database>::TX

Source§

type TXMut = <DB as Database>::TXMut