41 releases
0.20.5 | Aug 18, 2024 |
---|---|
0.20.3 | Jul 2, 2024 |
0.20.0-alpha.9 | Nov 27, 2023 |
0.20.0-alpha.3 | Jul 13, 2023 |
0.6.0 | Nov 26, 2019 |
#26 in Database interfaces
54,885 downloads per month
Used in 27 crates
(14 directly)
1MB
17K
SLoC
heed
A Rust-centric LMDB abstraction with minimal overhead. This library enables the storage of various Rust types within LMDB, extending support to include Serde-compatible types.
Simple Example Usage
Here is an example on how to store and read entries into LMDB in a safe and ACID way. For usage examples, see heed/examples/. To see more advanced usage techniques go check our Cookbook.
use std::fs;
use std::path::Path;
use heed::{EnvOpenOptions, Database};
use heed::types::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let env = unsafe { EnvOpenOptions::new().open("my-first-db")? };
// We open the default unnamed database
let mut wtxn = env.write_txn()?;
let db: Database<Str, U32<byteorder::NativeEndian>> = env.create_database(&mut wtxn, None)?;
// We open a write transaction
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()?;
// We open 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));
Ok(())
}
Building from Source
You can use this command to clone the repository:
git clone --recursive https://github.com/meilisearch/heed.git
cd heed
cargo build
However, if you already cloned it and forgot to initialize the submodules, execute the following command:
git submodule update --init
Dependencies
~0.7–2.6MB
~50K SLoC