Rust bindings for libmdbx.
Forked from reth-libmdbx, which was
forked from an earlier Apache licenced version of the libmdbx-rs crate.
NOTE: Most of the repo came from lmdb-rs bindings.
- Improve documentation :)
- Improve support for custom
TableObjecttypes.- Added
TableObjectOwnedtrait to represent types that can be deserialized from a database table without borrowing. - Added
ReadErrorerror type to represent errors that can occur when reading from the database. This captures MDBX errors as well as codec specific errors.
- Added
- More-accurate lifetime semantics
- Cursors now have lifetimes tied to the transaction they were created from.
- Cursors CANNOT hold transactions open.
- All DB reads borrow from the transaction when available.
- API consistency review
iteranditer_dupnow have consistent behavior (previously,iterwould start at the next key, whileiter_dupwould start at the current key).- Iteration methods that reposition the cursor now do so BEFORE returning the iterator.
- Module layout changes
sys- Environment and transaction management.tx- module contains transactions, cursors, and iterators
To update the libmdbx version you must clone it and copy the dist/ folder in
mdbx-sys/.
Make sure to follow the building steps.
# clone libmdbx to a repository outside at specific tag
git clone https://github.com/erthink/libmdbx.git ../libmdbx --branch v0.7.0
make -C ../libmdbx dist
# copy the `libmdbx/dist/` folder just created into `mdbx-sys/libmdbx`
rm -rf mdbx-sys/libmdbx
cp -R ../libmdbx/dist mdbx-sys/libmdbx
# add the changes to the next commit you will make
git add mdbx-sys/libmdbx