use std::{ path, ptr, }; use libc; use error::Result; use utils::{ NotmuchEnum, ToCString, }; use ffi; // Re-exported under database module for pretty namespacin'. pub use ffi::NotmuchDatabaseMode as Mode; #[derive(Copy, Debug)] pub struct Version(libc::c_uint); pub struct Database(*mut ffi::notmuch_database_t); impl Database { pub fn create(path: &P) -> Result { let path = path.as_path().to_cstring().unwrap(); let mut db = ptr::null_mut(); try!(unsafe { ffi::notmuch_database_create(path.as_ptr(), &mut db) }.as_result()); Ok(Database(db)) } pub fn open(path: &P, mode: Mode) -> Result { let path = path.as_path().to_cstring().unwrap(); let mut db = ptr::null_mut(); try!(unsafe { ffi::notmuch_database_open( path.as_ptr(), mode.to_notmuch_t(), &mut db, ) }.as_result()); Ok(Database(db)) } }