mmtkvdb
is a crate for Rust which provides a memory-mapped key-value
database. It uses LMDB and links with an existing liblmdb
on the system.
Because of how memory-mapped I/O is being used and also because of certain
assumptions of the underlying LMDB API, opening environments and databases
requires unsafe
Rust (i.e. the programmer must ensure that certain
preconditions are met that cannot be enforced by the compiler to avoid
undefined behavior). If you aim to program in safe Rust only, this Rust
library is not suitable for you.
For documentation on how to use this crate, refer to the example in
src/lib.rs
.
See contained LICENSE
file (MIT License).
'static
bound from Storable
traitunsafe
use of this librarycursor_set_key_search_value_get_value
, which was wrongly
defined and documentedcore::ffi::{c_size_t, c_int, c_uint}
for now instead of using
std::ffi
(see
commit 07ea143f96
in Rust
for explanation)EnvRo::txn
moved to Env
trait and renamed to Env::txn_ro
.EnvRw::txn
renamed to EnvRw::txn_rw
.EnvRo
and EnvRw
(doc comment explains how
to create them now, i.e. how to start a transaction)PhantomData
to store unit-like structs which indicate
constraints on key uniqueness in DbOptions
and Db
(KeysUnique
and
KeysDuplicate
are Copy
now and contained directly)DbOptions
to Env::open_dbs
Sized
in doc comment on private trait IsType
storable
module doesn't use transmute
on
references anymore. Instead, std::slice::from_raw_parts
,
std::str::from_utf8_unchecked
, and str::as_bytes()
are used.Storable
, StorableConstBytesLen
, and StorableWithOwned
traits
to new (public) storable
module (but Storable
gets re-exported by
crate-level module)u8
and i8
bool
storable (i.e. implement Storable
for bool
)IsType
trait to helpers
module)