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§
Required Methods§
Sourcefn tx(&self) -> Result<Self::TX, DatabaseError>
fn tx(&self) -> Result<Self::TX, DatabaseError>
Create read only transaction.
Sourcefn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>
fn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>
Create read write transaction only possible if database is open with write access.
Sourcefn oldest_reader_txnid(&self) -> Option<u64>
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.
Sourcefn last_txnid(&self) -> Option<u64>
fn last_txnid(&self) -> Option<u64>
Returns the ID of the most recently committed transaction, if available.
Provided Methods§
Sourcefn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
Takes a function and passes a read-only transaction into it, making sure it’s closed 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 &DBwhere
DB: Database,
impl<DB> Database for &DBwhere
DB: Database,
type TX = <DB as Database>::TX
type TXMut = <DB as Database>::TXMut
fn tx(&self) -> Result<<&DB as Database>::TX, DatabaseError>
fn tx_mut(&self) -> Result<<&DB as Database>::TXMut, DatabaseError>
fn path(&self) -> PathBuf
fn oldest_reader_txnid(&self) -> Option<u64>
fn last_txnid(&self) -> Option<u64>
Source§impl<DB> Database for Arc<DB>where
DB: Database,
impl<DB> Database for Arc<DB>where
DB: Database,
type TX = <DB as Database>::TX
type TXMut = <DB as Database>::TXMut
fn tx(&self) -> Result<<Arc<DB> as Database>::TX, DatabaseError>
fn tx_mut(&self) -> Result<<Arc<DB> as Database>::TXMut, DatabaseError>
fn path(&self) -> PathBuf
fn oldest_reader_txnid(&self) -> Option<u64>
fn last_txnid(&self) -> Option<u64>
Implementors§
Source§impl Database for DatabaseEnv
Available on crate feature mdbx only.
impl Database for DatabaseEnv
mdbx only.