[][src]Crate heed

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, relying on the zerocopy library to avoid copying bytes when that's unnecessary and the serde library when this is unavoidable.

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 heed::{EnvOpenOptions, Database};
use heed::types::*;

fs::create_dir_all("target/zerocopy.mdb")?;
let env = EnvOpenOptions::new().open("target/zerocopy.mdb")?;

// we will open the default unamed database
let db: Database<Str, OwnedType<i32>> = env.create_database(None)?;

// opening a write transaction
let mut wtxn = env.write_txn()?;
db.put(&mut wtxn, "seven", &7)?;
db.put(&mut wtxn, "zero", &0)?;
db.put(&mut wtxn, "five", &5)?;
db.put(&mut wtxn, "three", &3)?;
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));

let ret = db.get(&rtxn, "five")?;
assert_eq!(ret, Some(5));

Re-exports

pub use byteorder;
pub use zerocopy;

Modules

flags
types

Types that can be used to serialize and deserialize types inside databases.

Structs

Database

A typed database that accepts only the types it was created with.

Env
EnvOpenOptions
PolyDatabase

A polymorphic database that accepts types on call methods and not at creation.

RoIter
RoRange
RoTxn
RwIter
RwRange
RwTxn

Enums

CompactionOption
Error

An error that encapsulates all possible errors in this crate.

LmdbError

An LMDB error kind.

Traits

BytesDecode
BytesEncode

Type Definitions

Result