pub struct EnvironmentFlags { /* private fields */ }
Expand description
Environment options.
Implementations§
Source§impl EnvironmentFlags
impl EnvironmentFlags
Sourcepub const FIXED_MAP: Self = _
pub const FIXED_MAP: Self = _
Use a fixed address for the mmap region. This flag must be specified when creating the environment, and is stored persistently in the environment. If successful, the memory map will always reside at the same virtual address and pointers used to reference data items in the database will be constant across multiple invocations. This option may not always work, depending on how the operating system has allocated memory to shared libraries and other uses. The feature is highly experimental.
Sourcepub const NO_SUB_DIR: Self = _
pub const NO_SUB_DIR: Self = _
By default, LMDB creates its environment in a directory whose pathname is given in
path
, and creates its data and lock files under that directory. With this option,
path
is used as-is for the database main data file. The database lock file is the
path
with -lock
appended.
Sourcepub const WRITE_MAP: Self = _
pub const WRITE_MAP: Self = _
Use a writeable memory map unless READ_ONLY
is set. This is faster and uses
fewer mallocs, but loses protection from application bugs like wild pointer writes
and other bad updates into the database. Incompatible with nested transactions.
Processes with and without WRITE_MAP
on the same environment do not cooperate
well.
Sourcepub const READ_ONLY: Self = _
pub const READ_ONLY: Self = _
Open the environment in read-only mode. No write operations will be allowed. When opening an environment, LMDB will still modify the lock file - except on read-only filesystems, where LMDB does not use locks.
Sourcepub const NO_META_SYNC: Self = _
pub const NO_META_SYNC: Self = _
Flush system buffers to disk only once per transaction, omit the metadata flush.
Defer that until the system flushes files to disk, or next non-READ_ONLY
commit
or Environment::sync
. This optimization maintains database integrity, but a
system crash may undo the last committed transaction. I.e. it preserves the ACI
(atomicity, consistency, isolation) but not D (durability) database property.
This flag may be changed at any time using Environment::set_flags
.
Sourcepub const NO_SYNC: Self = _
pub const NO_SYNC: Self = _
Don’t flush system buffers to disk when committing a transaction. This optimization
means a system crash can corrupt the database or lose the last transactions if
buffers are not yet flushed to disk. The risk is governed by how often the system
flushes dirty buffers to disk and how often Environment::sync
is called. However,
if the filesystem preserves write order and the WRITE_MAP
flag is not used,
transactions exhibit ACI (atomicity, consistency, isolation) properties and only
lose D (durability). I.e. database integrity is maintained, but a system
crash may undo the final transactions. Note that (NO_SYNC | WRITE_MAP
) leaves the
system with no hint for when to write transactions to disk, unless
Environment::sync
is called. (MAP_ASYNC | WRITE_MAP
) may be preferable.
This flag may be changed at any time using Environment::set_flags
.
Sourcepub const MAP_ASYNC: Self = _
pub const MAP_ASYNC: Self = _
When using WRITE_MAP
, use asynchronous flushes to disk. As with NO_SYNC
, a
system crash can then corrupt the database or lose the last transactions. Calling
Environment::sync
ensures on-disk database integrity until next commit.
This flag may be changed at any time using Environment::set_flags
.
Sourcepub const NO_TLS: Self = _
pub const NO_TLS: Self = _
Don’t use thread-local storage. Tie reader locktable slots to transaction objects
instead of to threads. I.e. RoTransaction::reset
keeps the slot reserved for the
transaction object. A thread may use parallel read-only transactions. A read-only
transaction may span threads if the user synchronizes its use. Applications that
multiplex many the user synchronizes its use. Applications that multiplex many user
threads over individual OS threads need this option. Such an application must also
serialize the write transactions in an OS thread, since LMDB’s write locking is
unaware of the user threads.
Sourcepub const NO_LOCK: Self = _
pub const NO_LOCK: Self = _
Do not do any locking. If concurrent access is anticipated, the caller must manage all concurrency themself. For proper operation the caller must enforce single-writer semantics, and must ensure that no readers are using old transactions while a writer is active. The simplest approach is to use an exclusive lock so that no readers may be active at all when a writer begins.
Sourcepub const NO_READAHEAD: Self = _
pub const NO_READAHEAD: Self = _
Turn off readahead. Most operating systems perform readahead on read requests by default. This option turns it off if the OS supports it. Turning it off may help random read performance when the DB is larger than RAM and system RAM is full. The option is not implemented on Windows.
Sourcepub const NO_MEM_INIT: Self = _
pub const NO_MEM_INIT: Self = _
Do not initialize malloc’d memory before writing to unused spaces in the data file.
By default, memory for pages written to the data file is obtained using malloc.
While these pages may be reused in subsequent transactions, freshly malloc’d pages
will be initialized to zeroes before use. This avoids persisting leftover data from
other code (that used the heap and subsequently freed the memory) into the data
file. Note that many other system libraries may allocate and free memory from the
heap for arbitrary uses. E.g., stdio may use the heap for file I/O buffers. This
initialization step has a modest performance cost so some applications may want to
disable it using this flag. This option can be a problem for applications which
handle sensitive data like passwords, and it makes memory checkers like Valgrind
noisy. This flag is not needed with WRITE_MAP
, which writes directly to the mmap
instead of using malloc for pages. The initialization is also skipped if writing
with reserve; the caller is expected to overwrite all of the memory that was
reserved in that case.
This flag may be changed at any time using Environment::set_flags
.
Sourcepub const fn from_bits(bits: c_uint) -> Option<Self>
pub const fn from_bits(bits: c_uint) -> Option<Self>
Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.
Sourcepub const fn from_bits_truncate(bits: c_uint) -> Self
pub const fn from_bits_truncate(bits: c_uint) -> Self
Convert from underlying bit representation, dropping any bits that do not correspond to flags.
Sourcepub const unsafe fn from_bits_unchecked(bits: c_uint) -> Self
pub const unsafe fn from_bits_unchecked(bits: c_uint) -> Self
Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).
§Safety
The caller of the bitflags!
macro can chose to allow or
disallow extra bits for their bitflags type.
The caller of from_bits_unchecked()
has to ensure that
all bits correspond to a defined flag or that extra bits
are valid for this bitflags type.
Sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Returns true
if there are flags common to both self
and other
.
Sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Returns true
if all of the flags in other
are contained within self
.
Sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Inserts or removes the specified flags depending on the passed value.
Sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
Returns the intersection between the flags in self
and
other
.
Specifically, the returned set contains only the flags which are
present in both self
and other
.
This is equivalent to using the &
operator (e.g.
ops::BitAnd
), as in flags & other
.
Sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
Returns the union of between the flags in self
and other
.
Specifically, the returned set contains all flags which are
present in either self
or other
, including any which are
present in both (see Self::symmetric_difference
if that
is undesirable).
This is equivalent to using the |
operator (e.g.
ops::BitOr
), as in flags | other
.
Sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
Returns the difference between the flags in self
and other
.
Specifically, the returned set contains all flags present in
self
, except for the ones present in other
.
It is also conceptually equivalent to the “bit-clear” operation:
flags & !other
(and this syntax is also supported).
This is equivalent to using the -
operator (e.g.
ops::Sub
), as in flags - other
.
Sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
Returns the symmetric difference between the flags
in self
and other
.
Specifically, the returned set contains the flags present which
are present in self
or other
, but that are not present in
both. Equivalently, it contains the flags present in exactly
one of the sets self
and other
.
This is equivalent to using the ^
operator (e.g.
ops::BitXor
), as in flags ^ other
.
Sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Returns the complement of this set of flags.
Specifically, the returned set contains all the flags which are
not set in self
, but which are allowed for this type.
Alternatively, it can be thought of as the set difference
between Self::all()
and self
(e.g. Self::all() - self
)
This is equivalent to using the !
operator (e.g.
ops::Not
), as in !flags
.
Trait Implementations§
Source§impl Binary for EnvironmentFlags
impl Binary for EnvironmentFlags
Source§impl BitAnd for EnvironmentFlags
impl BitAnd for EnvironmentFlags
Source§impl BitAndAssign for EnvironmentFlags
impl BitAndAssign for EnvironmentFlags
Source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
Source§impl BitOr for EnvironmentFlags
impl BitOr for EnvironmentFlags
Source§fn bitor(self, other: EnvironmentFlags) -> Self
fn bitor(self, other: EnvironmentFlags) -> Self
Returns the union of the two sets of flags.
Source§type Output = EnvironmentFlags
type Output = EnvironmentFlags
|
operator.Source§impl BitOrAssign for EnvironmentFlags
impl BitOrAssign for EnvironmentFlags
Source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
Source§impl BitXor for EnvironmentFlags
impl BitXor for EnvironmentFlags
Source§impl BitXorAssign for EnvironmentFlags
impl BitXorAssign for EnvironmentFlags
Source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
Source§impl Clone for EnvironmentFlags
impl Clone for EnvironmentFlags
Source§fn clone(&self) -> EnvironmentFlags
fn clone(&self) -> EnvironmentFlags
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for EnvironmentFlags
impl Debug for EnvironmentFlags
Source§impl Default for EnvironmentFlags
impl Default for EnvironmentFlags
Source§fn default() -> EnvironmentFlags
fn default() -> EnvironmentFlags
Source§impl Extend<EnvironmentFlags> for EnvironmentFlags
impl Extend<EnvironmentFlags> for EnvironmentFlags
Source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Source§impl FromIterator<EnvironmentFlags> for EnvironmentFlags
impl FromIterator<EnvironmentFlags> for EnvironmentFlags
Source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Source§impl Hash for EnvironmentFlags
impl Hash for EnvironmentFlags
Source§impl LowerHex for EnvironmentFlags
impl LowerHex for EnvironmentFlags
Source§impl Not for EnvironmentFlags
impl Not for EnvironmentFlags
Source§impl Octal for EnvironmentFlags
impl Octal for EnvironmentFlags
Source§impl Ord for EnvironmentFlags
impl Ord for EnvironmentFlags
Source§fn cmp(&self, other: &EnvironmentFlags) -> Ordering
fn cmp(&self, other: &EnvironmentFlags) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for EnvironmentFlags
impl PartialEq for EnvironmentFlags
Source§impl PartialOrd for EnvironmentFlags
impl PartialOrd for EnvironmentFlags
Source§impl Sub for EnvironmentFlags
impl Sub for EnvironmentFlags
Source§impl SubAssign for EnvironmentFlags
impl SubAssign for EnvironmentFlags
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
Source§impl UpperHex for EnvironmentFlags
impl UpperHex for EnvironmentFlags
impl Copy for EnvironmentFlags
impl Eq for EnvironmentFlags
impl StructuralPartialEq for EnvironmentFlags
Auto Trait Implementations§
impl Freeze for EnvironmentFlags
impl RefUnwindSafe for EnvironmentFlags
impl Send for EnvironmentFlags
impl Sync for EnvironmentFlags
impl Unpin for EnvironmentFlags
impl UnwindSafe for EnvironmentFlags
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)