aboutsummaryrefslogtreecommitdiffstats
path: root/src/message.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message.rs')
-rw-r--r--src/message.rs31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/message.rs b/src/message.rs
index f825e03..4c35544 100644
--- a/src/message.rs
+++ b/src/message.rs
@@ -59,10 +59,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn replies(self: &Self) -> Messages<Self> {
- Messages::from_ptr(
- unsafe { ffi::notmuch_message_get_replies(self.handle.ptr) },
- self,
- )
+ <Self as MessageExt<'o, Owner>>::replies(self)
}
#[cfg(feature = "v0_26")]
@@ -71,10 +68,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn filenames(self: &Self) -> Filenames<Self> {
- Filenames::from_ptr(
- unsafe { ffi::notmuch_message_get_filenames(self.handle.ptr) },
- self,
- )
+ <Self as MessageExt<'o, Owner>>::filenames(self)
}
pub fn filename(self: &Self) -> PathBuf {
@@ -104,10 +98,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn tags(&self) -> Tags<Self> {
- Tags::from_ptr(
- unsafe { ffi::notmuch_message_get_tags(self.handle.ptr) },
- self,
- )
+ <Self as MessageExt<'o, Owner>>::tags(self)
}
pub fn add_tag(self: &Self, tag: &str) -> Status {
@@ -134,7 +125,15 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
pub trait MessageExt<'o, Owner: MessageOwner + 'o>{
- fn replies<'s, M: Into<Supercow<'s, Message<'o, Owner>>>>(message: M) -> Messages<'s, Message<'o, Owner>> {
+ fn tags<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(message: S) -> Tags<'s, Message<'o, Owner>> {
+ let messageref = message.into();
+ Tags::from_ptr(
+ unsafe { ffi::notmuch_message_get_tags(messageref.handle.ptr) },
+ Supercow::phantom(messageref)
+ )
+ }
+
+ fn replies<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(message: S) -> Messages<'s, Message<'o, Owner>> {
let messageref = message.into();
Messages::from_ptr(
unsafe { ffi::notmuch_message_get_replies(messageref.handle.ptr) },
@@ -142,7 +141,7 @@ pub trait MessageExt<'o, Owner: MessageOwner + 'o>{
)
}
- fn filenames<'s, M: Into<Supercow<'s, Message<'o, Owner>>>>(message: M) -> Filenames<'s, Message<'o, Owner>> {
+ fn filenames<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(message: S) -> Filenames<'s, Message<'o, Owner>> {
let messageref = message.into();
Filenames::from_ptr(
unsafe { ffi::notmuch_message_get_filenames(messageref.handle.ptr) },
@@ -151,5 +150,9 @@ pub trait MessageExt<'o, Owner: MessageOwner + 'o>{
}
}
+impl<'o, Owner: MessageOwner + 'o> MessageExt<'o, Owner> for Message<'o, Owner>{
+
+}
+
unsafe impl<'o, Owner: MessageOwner + 'o> Send for Message<'o, Owner> {}
unsafe impl<'o, Owner: MessageOwner + 'o> Sync for Message<'o, Owner> {}