Crate smolheed

Source
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§

flags

Structs§

Database
A database that stores entries composed of slice of bytes.
Env
EnvClosingEvent
A struct that can be used to synchronously wait (block the thread) for a environement closing event to occur.
EnvOpenOptions
RoIter
RoPrefix
RoRange
RoRevIter
RoRevPrefix
RoRevRange
RoTxn
RwIter
RwPrefix
RwRange
RwRevIter
RwRevPrefix
RwRevRange
RwTxn

Enums§

CompactionOption
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.

Type Aliases§

Result