aboutsummaryrefslogtreecommitdiffstats
path: root/src/message.rs
diff options
context:
space:
mode:
authorDirk Van Haerenborgh <vhdirk@gmail.com>2018-10-25 08:02:04 +0200
committerDirk Van Haerenborgh <vhdirk@gmail.com>2018-10-25 08:02:04 +0200
commitbd1a184600a0d42c36d7d2fc5f010692d0ab46aa (patch)
treeb377aaea58b99ef56a98b58f0bb30ba5d06f275f /src/message.rs
parenta4ffe47c51d1617fc0e728c7bbd7e9b3738878cb (diff)
downloadmail-bd1a184600a0d42c36d7d2fc5f010692d0ab46aa.tar.gz
more correct lifetimes
Diffstat (limited to 'src/message.rs')
-rw-r--r--src/message.rs27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/message.rs b/src/message.rs
index ddcb356..c5a6404 100644
--- a/src/message.rs
+++ b/src/message.rs
@@ -14,7 +14,10 @@ use Query;
use Messages;
use Filenames;
use Tags;
+use messages::MessagesOwner;
+use filenames::FilenamesOwner;
+pub trait MessageOwner{}
#[derive(Debug)]
pub(crate) struct MessagePtr {
@@ -30,13 +33,17 @@ impl Drop for MessagePtr {
}
#[derive(Debug)]
-pub struct Message<'d:'q, 'q>{
+pub struct Message<'o, Owner: MessageOwner>{
pub(crate) handle: MessagePtr,
- phantom: PhantomData<&'q Query<'d>>,
+ phantom: PhantomData<&'o Owner>,
}
-impl<'d, 'q> FromPtr<*mut ffi::notmuch_message_t> for Message<'d, 'q> {
- fn from_ptr(ptr: *mut ffi::notmuch_message_t) -> Message<'d, 'q> {
+impl<'o, Owner: MessageOwner> MessagesOwner for Message<'o, Owner>{}
+impl<'o, Owner: MessageOwner> FilenamesOwner for Message<'o, Owner>{}
+
+
+impl<'o, Owner: MessageOwner> FromPtr<*mut ffi::notmuch_message_t> for Message<'o, Owner> {
+ fn from_ptr(ptr: *mut ffi::notmuch_message_t) -> Message<'o, Owner> {
Message{
handle: MessagePtr{ptr},
phantom: PhantomData
@@ -44,7 +51,7 @@ impl<'d, 'q> FromPtr<*mut ffi::notmuch_message_t> for Message<'d, 'q> {
}
}
-impl<'d, 'q> Message<'d, 'q>{
+impl<'o, Owner: MessageOwner> Message<'o, Owner>{
pub fn id(self: &Self) -> String{
let mid = unsafe {
@@ -60,7 +67,7 @@ impl<'d, 'q> Message<'d, 'q>{
tid.to_str().unwrap().to_string()
}
- pub fn replies(self: &'q Self) -> Messages<'d, 'q>{
+ pub fn replies(self: &Self) -> Messages<'o, Self>{
Messages::from_ptr(unsafe {
ffi::notmuch_message_get_replies(self.handle.ptr)
})
@@ -73,7 +80,7 @@ impl<'d, 'q> Message<'d, 'q>{
}
}
- pub fn filenames(self: &'d Self) -> Filenames<'d>{
+ pub fn filenames(self: &Self) -> Filenames<Self>{
Filenames::from_ptr(unsafe {
ffi::notmuch_message_get_filenames(self.handle.ptr)
})
@@ -97,12 +104,12 @@ impl<'d, 'q> Message<'d, 'q>{
}
}
- pub fn tags(self: &'d Self) -> Tags<'d>{
+ pub fn tags(self: &Self) -> Tags{
Tags::from_ptr(unsafe {
ffi::notmuch_message_get_tags(self.handle.ptr)
})
}
}
-unsafe impl<'d, 'q> Send for Message<'d, 'q>{}
-unsafe impl<'d, 'q> Sync for Message<'d, 'q>{}
+unsafe impl<'o, Owner: MessageOwner> Send for Message<'o, Owner>{}
+unsafe impl<'o, Owner: MessageOwner> Sync for Message<'o, Owner>{}