diff --git a/src/environment.rs b/src/environment.rs index a0778e3..c924fa5 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -2,8 +2,11 @@ use crate::database::raw::{RawTable, RawTableTryBuilder}; use crate::database::wrapped::WrappedTable; use crate::wrapper::{ByteWrapper, ZeroCopyByteWrapper}; use anyhow::{ensure, Context}; -use libmdbx::{DatabaseFlags, Environment, Transaction, TransactionKind, WriteMap, RO, RW}; +use libmdbx::{ + DatabaseFlags, Environment, EnvironmentFlags, Transaction, TransactionKind, WriteMap, RO, RW, +}; use std::marker::PhantomData; +use std::path::Path; use std::sync::Arc; pub struct Env { @@ -11,6 +14,20 @@ pub struct Env { } impl Env { + pub fn open(path: &Path) -> anyhow::Result { + let mut flags = EnvironmentFlags::default(); + flags.no_sub_dir = true; + + let environment = Environment::new() + .set_max_dbs(256) + .set_flags(flags) + .open(path)?; + + Ok(Env { + mdbx_env: Arc::new(environment), + }) + } + pub fn open_raw_table( &self, name: Option<&str>,