Crate smolheed[−][src]
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
A database that stores entries composed of slice of bytes.
A struct that can be used to synchronously wait (block the thread) for a environement closing event to occur.
Enums
An error that encapsulates all possible errors in this crate.
An LMDB error kind.
Functions
Returns a struct that allows to wait for the effective closing of an environment.