Skip to content

Repository files navigation

heed & heed3

LicenseCrates.ioDocsdependency statusBuildDiscord

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 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::*;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:

git submodule update --init

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages