From 64304118fcd8a876815450194a315846b1a95422 Mon Sep 17 00:00:00 2001 From: Dirk Van Haerenborgh Date: Thu, 22 Mar 2018 09:56:54 +0100 Subject: correct lifetime for query --- src/query.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'src/query.rs') diff --git a/src/query.rs b/src/query.rs index 24a2a1b..18d44d7 100644 --- a/src/query.rs +++ b/src/query.rs @@ -1,24 +1,38 @@ use std::{ ops, + marker }; use error::Result; use ffi; +use utils::{ + NewFromPtr, +}; +use Database; -use database::Database; #[derive(Debug)] -pub struct Query(pub(crate) *mut ffi::notmuch_query_t); +pub struct Query<'d>( + pub(crate) *mut ffi::notmuch_query_t, + marker::PhantomData<&'d mut Database>, +); + -impl Query { - pub fn create(db: &Database, query_string: &String) -> Result { +impl<'d> Query<'d> { + pub fn create(db: &'d Database, query_string: &String) -> Result { db.create_query(query_string) } } +impl<'d> NewFromPtr<*mut ffi::notmuch_query_t> for Query<'d> { + fn new(ptr: *mut ffi::notmuch_query_t) -> Query<'d> { + Query(ptr, marker::PhantomData) + } +} + -impl ops::Drop for Query { +impl<'d> ops::Drop for Query<'d> { fn drop(&mut self) { unsafe { ffi::notmuch_query_destroy(self.0) -- cgit v1.2.1