From bd1a184600a0d42c36d7d2fc5f010692d0ab46aa Mon Sep 17 00:00:00 2001 From: Dirk Van Haerenborgh Date: Thu, 25 Oct 2018 08:02:04 +0200 Subject: more correct lifetimes --- src/messages.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'src/messages.rs') diff --git a/src/messages.rs b/src/messages.rs index 4bc90e9..40929eb 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -9,7 +9,10 @@ use utils::{ use Query; use Message; use Tags; +use message::MessageOwner; +pub trait MessagesOwner{ +} #[derive(Debug)] pub(crate) struct MessagesPtr { @@ -34,13 +37,13 @@ impl Drop for MessagesPtr { #[derive(Debug)] -pub struct Messages<'d:'q, 'q>{ +pub struct Messages<'o, Owner: MessagesOwner>{ pub(crate) handle: MessagesPtr, - phantom: PhantomData<&'q Query<'d>>, + phantom: PhantomData<&'o Owner>, } -impl<'d, 'q> FromPtr<*mut ffi::notmuch_messages_t> for Messages<'d, 'q> { - fn from_ptr(ptr: *mut ffi::notmuch_messages_t) -> Messages<'d, 'q> { +impl<'o, Owner: MessagesOwner> FromPtr<*mut ffi::notmuch_messages_t> for Messages<'o, Owner> { + fn from_ptr(ptr: *mut ffi::notmuch_messages_t) -> Messages<'o, Owner> { Messages{ handle: MessagesPtr{ptr}, phantom: PhantomData @@ -48,7 +51,10 @@ impl<'d, 'q> FromPtr<*mut ffi::notmuch_messages_t> for Messages<'d, 'q> { } } -impl<'d, 'q> Messages<'d, 'q>{ +impl<'o, Owner: MessagesOwner> MessageOwner for Messages<'o, Owner>{} + + +impl<'o, Owner: MessagesOwner> Messages<'o, Owner>{ /** * Return a list of tags from all messages. @@ -63,7 +69,7 @@ impl<'d, 'q> Messages<'d, 'q>{ * * The function returns NULL on error. */ - pub fn collect_tags(self: &'d Self) -> Tags{ + pub fn collect_tags(self: &'o Self) -> Tags{ Tags::from_ptr(unsafe { ffi::notmuch_messages_collect_tags(self.handle.ptr) }) @@ -72,8 +78,8 @@ impl<'d, 'q> Messages<'d, 'q>{ -impl<'d, 'q> Iterator for Messages<'d, 'q> { - type Item = Message<'d, 'q>; +impl<'o, Owner: MessagesOwner> Iterator for Messages<'o, Owner> { + type Item = Message<'o, Self>; fn next(&mut self) -> Option { @@ -95,5 +101,5 @@ impl<'d, 'q> Iterator for Messages<'d, 'q> { } } -unsafe impl<'d, 'q> Send for Messages<'d, 'q>{} -unsafe impl<'d, 'q> Sync for Messages<'d, 'q>{} +unsafe impl<'o, Owner: MessagesOwner> Send for Messages<'o, Owner>{} +unsafe impl<'o, Owner: MessagesOwner> Sync for Messages<'o, Owner>{} -- cgit v1.2.1