use std::error::Error;
use heed::types::*;
use heed::{CommitOrAbort, Database, EnvOpenOptions, PutFlags};
fn main() -> Result<(), Box<dyn Error>> {
let env_path = tempfile::tempdir()?;
let env = unsafe {
EnvOpenOptions::new()
.map_size(10 * 1024 * 1024) .max_dbs(3)
.open(env_path)?
};
let wtxn = env.write_txn()?;
let (first, second) = env
.create_databases_and_commit(wtxn, |wdo, wtxn| {
let first: Database<Str, Str> = wdo.create_database(wtxn, Some("first"))?;
let second: Database<Str, Str> = wdo.create_database(wtxn, Some("second"))?;
heed::Result::Ok(CommitOrAbort::<_, ()>::Commit((first, second)))
})?
.unwrap_commit();
let mut wtxn = env.write_txn()?;
first.put(&mut wtxn, "I am here", "to test things")?;
first.put(&mut wtxn, "I am here too", "for the same purpose")?;
let mut iter = second.iter_mut(&mut wtxn)?;
unsafe { iter.put_current_with_options::<Str>(PutFlags::APPEND, "aaaa", "lol")? };
unsafe { iter.put_current_with_options::<Str>(PutFlags::APPEND, "abcd", "lol")? };
unsafe { iter.put_current_with_options::<Str>(PutFlags::APPEND, "bcde", "lol")? };
drop(iter);
wtxn.commit()?;
Ok(())
}