13 个版本
0.20.0 | 2024年4月26日 |
---|---|
0.20.0-alpha.9 | 2023年11月27日 |
0.20.0-alpha.4 | 2023年8月23日 |
0.20.0-alpha.3 | 2023年7月13日 |
0.7.0 | 2020年4月26日 |
#1583 在 数据库接口
44,618 每月下载量
用于 17 个 Crates(直接使用 3 个)
8KB
heed
一个以 Rust 为中心的、具有最小开销的 LMDB 抽象。该库允许在 LMDB 中存储各种 Rust 类型,并扩展支持到与 Serde 兼容的类型。
简单示例用法
以下是如何以安全和 ACID 方式存储和读取 LMDB 中的条目的示例。有关用法示例,请参阅 heed/examples/。要了解更多高级用法技术,请参阅我们的 食谱。
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(())
}
从源码构建
您可以使用以下命令克隆存储库
git clone --recursive https://github.com/meilisearch/heed.git
cd heed
cargo build
但是,如果您已经克隆了它并且忘记初始化子模块,请执行以下命令
git submodule update --init