Expand description
Crate heed
is a high-level wrapper of LMDB, high-level doesn’t mean heavy (think about Rust).
It provides you a way to store types in LMDB without any limit and with a minimal overhead as possible.
The Lightning Memory-Mapped Database (LMDB) directly maps files parts into main memory, combined with the zerocopy library allows us to safely zero-copy parse and serialize Rust types into LMDB.
§Examples
Discern let you open a database, that will support some typed key/data and ensures, at compile time, that you’ll write those types and not others.
use std::fs;
use std::path::Path;
use smolheed::{EnvOpenOptions, Database};
fs::create_dir_all(Path::new("target").join("zerocopy.mdb"))?;
let env = EnvOpenOptions::new().open(Path::new("target").join("zerocopy.mdb"))?;
// we will open the default unamed database
let db = env.create_database(None)?;
// opening a write transaction
let mut wtxn = env.write_txn()?;
db.put(&mut wtxn, "seven", 7_i32.to_be_bytes())?;
db.put(&mut wtxn, "zero", 0_i32.to_be_bytes())?;
db.put(&mut wtxn, "five", 5_i32.to_be_bytes())?;
db.put(&mut wtxn, "three", 3_i32.to_be_bytes())?;
wtxn.commit()?;
// opening a read transaction
// to check if those values are now available
let mut rtxn = env.read_txn()?;
let ret = db.get(&rtxn, "zero")?;
assert_eq!(ret, Some(&0_i32.to_be_bytes()[..]));
let ret = db.get(&rtxn, "five")?;
assert_eq!(ret, Some(&5_i32.to_be_bytes()[..]));
Modules§
Structs§
- Database
- A database that stores entries composed of slice of bytes.
- Env
- EnvClosing
Event - A struct that can be used to synchronously wait (block the thread) for a environement closing event to occur.
- EnvOpen
Options - RoIter
- RoPrefix
- RoRange
- RoRev
Iter - RoRev
Prefix - RoRev
Range - RoTxn
- RwIter
- RwPrefix
- RwRange
- RwRev
Iter - RwRev
Prefix - RwRev
Range - RwTxn
Enums§
- Compaction
Option - Error
- An error that encapsulates all possible errors in this crate.
- MdbError
- An LMDB error kind.
Functions§
- env_
closing_ event - Returns a struct that allows to wait for the effective closing of an environment.