pub struct DatabaseEnv { /* private fields */ }
mdbx
only.Expand description
Wrapper for the libmdbx environment: Environment
Implementations§
Source§impl DatabaseEnv
impl DatabaseEnv
Sourcepub fn open(
path: &Path,
kind: DatabaseEnvKind,
args: DatabaseArguments,
) -> Result<Self, DatabaseError>
pub fn open( path: &Path, kind: DatabaseEnvKind, args: DatabaseArguments, ) -> Result<Self, DatabaseError>
Opens the database at the specified path with the given EnvKind
.
It does not create the tables, for that call DatabaseEnv::create_tables
.
Sourcepub fn with_metrics(self) -> Self
pub fn with_metrics(self) -> Self
Enables metrics on the database.
Sourcepub fn create_tables(&self) -> Result<(), DatabaseError>
pub fn create_tables(&self) -> Result<(), DatabaseError>
Creates all the tables defined in Tables
, if necessary.
Sourcepub fn create_tables_for<TS: TableSet>(&self) -> Result<(), DatabaseError>
pub fn create_tables_for<TS: TableSet>(&self) -> Result<(), DatabaseError>
Creates all the tables defined in the given TableSet
, if necessary.
Sourcepub fn record_client_version(
&self,
version: ClientVersion,
) -> Result<(), DatabaseError>
pub fn record_client_version( &self, version: ClientVersion, ) -> Result<(), DatabaseError>
Records version that accesses the database with write privileges.
Methods from Deref<Target = Environment>§
Sourcepub fn is_write_map(&self) -> bool
pub fn is_write_map(&self) -> bool
Returns true if the environment was opened as WRITEMAP.
Sourcepub fn env_kind(&self) -> EnvironmentKind
pub fn env_kind(&self) -> EnvironmentKind
Returns the kind of the environment.
Sourcepub fn is_read_write(&self) -> Result<bool, Error>
pub fn is_read_write(&self) -> Result<bool, Error>
Returns true if the environment was opened in crate::Mode::ReadWrite
mode.
Sourcepub fn is_read_only(&self) -> Result<bool, Error>
pub fn is_read_only(&self) -> Result<bool, Error>
Returns true if the environment was opened in crate::Mode::ReadOnly
mode.
Sourcepub fn timed_out_not_aborted_transactions(&self) -> usize
Available on crate feature read-tx-timeouts
only.
pub fn timed_out_not_aborted_transactions(&self) -> usize
read-tx-timeouts
only.Returns the number of timed out transactions that were not aborted by the user yet.
Sourcepub fn begin_ro_txn(&self) -> Result<Transaction<RO>, Error>
pub fn begin_ro_txn(&self) -> Result<Transaction<RO>, Error>
Create a read-only transaction for use with the environment.
Sourcepub fn begin_rw_txn(&self) -> Result<Transaction<RW>, Error>
pub fn begin_rw_txn(&self) -> Result<Transaction<RW>, Error>
Create a read-write transaction for use with the environment. This method will block while there are any other read-write transactions open on the environment.
Sourcepub fn sync(&self, force: bool) -> Result<bool, Error>
pub fn sync(&self, force: bool) -> Result<bool, Error>
Flush the environment data buffers to disk.
Sourcepub fn freelist(&self) -> Result<usize, Error>
pub fn freelist(&self) -> Result<usize, Error>
Retrieves the total number of pages on the freelist.
Along with Environment::info()
, this can be used to calculate the exact number
of used pages as well as free pages in this environment.
let dir = tempfile::tempdir().unwrap();
let env = Environment::builder().open(dir.path()).unwrap();
let info = env.info().unwrap();
let stat = env.stat().unwrap();
let freelist = env.freelist().unwrap();
let last_pgno = info.last_pgno() + 1; // pgno is 0 based.
let total_pgs = info.map_size() / stat.page_size() as usize;
let pgs_in_use = last_pgno - freelist;
let pgs_free = total_pgs - pgs_in_use;
Note:
-
MDBX stores all the freelists in the designated database 0 in each environment, and the freelist count is stored at the beginning of the value as
uint32_t
in the native byte order. -
It will create a read transaction to traverse the freelist database.
Trait Implementations§
Source§impl Database for DatabaseEnv
impl Database for DatabaseEnv
Source§fn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>
fn tx_mut(&self) -> Result<Self::TXMut, DatabaseError>
§fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
fn view<T, F>(&self, f: F) -> Result<T, DatabaseError>
Source§impl DatabaseMetadata for DatabaseEnv
impl DatabaseMetadata for DatabaseEnv
Source§fn metadata(&self) -> DatabaseMetadataValue
fn metadata(&self) -> DatabaseMetadataValue
DatabaseMetadataValue
for the database.Source§impl DatabaseMetrics for DatabaseEnv
impl DatabaseMetrics for DatabaseEnv
Source§fn report_metrics(&self)
fn report_metrics(&self)
Source§fn gauge_metrics(&self) -> Vec<(&'static str, f64, Vec<Label>)>
fn gauge_metrics(&self) -> Vec<(&'static str, f64, Vec<Label>)>
Source§impl Debug for DatabaseEnv
impl Debug for DatabaseEnv
Auto Trait Implementations§
impl Freeze for DatabaseEnv
impl !RefUnwindSafe for DatabaseEnv
impl Send for DatabaseEnv
impl Sync for DatabaseEnv
impl Unpin for DatabaseEnv
impl !UnwindSafe for DatabaseEnv
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> MaybeDebug for Twhere
T: Debug,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes