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.

Type Definitions