Safe Rust bindings for LMDB with encryption at rest
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
extern crate lmdb;
|
|
|
|
extern crate tempdir;
|
|
|
|
|
|
|
|
use self::tempdir::TempDir;
|
|
|
|
use lmdb::{
|
|
|
|
Environment,
|
|
|
|
Transaction,
|
|
|
|
WriteFlags,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub fn get_key(n: u32) -> String {
|
|
|
|
format!("key{}", n)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn get_data(n: u32) -> String {
|
|
|
|
format!("data{}", n)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn setup_bench_db<'a>(num_rows: u32) -> (TempDir, Environment) {
|
|
|
|
let dir = TempDir::new("test").unwrap();
|
|
|
|
let env = Environment::new().open(dir.path()).unwrap();
|
|
|
|
|
|
|
|
{
|
|
|
|
let db = env.open_db(None).unwrap();
|
|
|
|
let mut txn = env.begin_rw_txn().unwrap();
|
|
|
|
for i in 0..num_rows {
|
|
|
|
txn.put(db, &get_key(i), &get_data(i), WriteFlags::empty()).unwrap();
|
|
|
|
}
|
|
|
|
txn.commit().unwrap();
|
|
|
|
}
|
|
|
|
(dir, env)
|
|
|
|
}
|