You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rust-centric LMDB abstractions with minimal overhead. These libraries enable the storage of various Rust types within LMDB, extending support to include Serde-compatible types. It supports not only the LMDB mdb.master branch but also the mdb.master3 branch, which features encryption-at-rest.
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 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::*;fnmain() -> Result<(),Box<dyn std::error::Error>>{let env = unsafe{EnvOpenOptions::new().open("my-first-db")? };// We open the default unnamed databaseletmut 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 availableletmut 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(())}
Working with two Crates: heed and heed3
The heed and heed3 crates manage a shared codebase. Within the heed3 folder, you can find the Cargo.toml specific to the heed3 crate.
To facilitate work on heed3, utilize the convert-to-heed3.sh script.
This script conveniently moves the heed3/Cargo.toml file to the heed/ folder, updates the heed:: references to heed3::, and generates a commit for easy rollback if needed.
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: