[−][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 |