aboutsummaryrefslogtreecommitdiffstats
path: root/src/message.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message.rs')
-rw-r--r--src/message.rs66
1 files changed, 39 insertions, 27 deletions
diff --git a/src/message.rs b/src/message.rs
index 4b3c92f..b253d68 100644
--- a/src/message.rs
+++ b/src/message.rs
@@ -28,20 +28,26 @@ impl Drop for MessagePtr {
}
#[derive(Debug)]
-pub struct Message<'o, Owner: MessageOwner + 'o> {
+pub struct Message<'o, O>
+where
+ O: MessageOwner + 'o,
+{
pub(crate) handle: MessagePtr,
- marker: Phantomcow<'o, Owner>,
+ marker: Phantomcow<'o, O>,
}
-impl<'o, Owner: MessageOwner + 'o> MessagesOwner for Message<'o, Owner> {}
-impl<'o, Owner: MessageOwner + 'o> FilenamesOwner for Message<'o, Owner> {}
-impl<'o, Owner: MessageOwner + 'o> TagsOwner for Message<'o, Owner> {}
-
-impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
- pub fn from_ptr<O: Into<Phantomcow<'o, Owner>>>(
- ptr: *mut ffi::notmuch_message_t,
- owner: O,
- ) -> Message<'o, Owner> {
+impl<'o, O> MessagesOwner for Message<'o, O> where O: MessageOwner + 'o {}
+impl<'o, O> FilenamesOwner for Message<'o, O> where O: MessageOwner + 'o {}
+impl<'o, O> TagsOwner for Message<'o, O> where O: MessageOwner + 'o {}
+
+impl<'o, O> Message<'o, O>
+where
+ O: MessageOwner + 'o,
+{
+ pub fn from_ptr<P>(ptr: *mut ffi::notmuch_message_t, owner: P) -> Message<'o, O>
+ where
+ P: Into<Phantomcow<'o, O>>,
+ {
Message {
handle: MessagePtr { ptr },
marker: owner.into(),
@@ -59,7 +65,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn replies(self: &Self) -> Messages<Self> {
- <Self as MessageExt<'o, Owner>>::replies(self)
+ <Self as MessageExt<'o, O>>::replies(self)
}
#[cfg(feature = "v0_26")]
@@ -68,7 +74,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn filenames(self: &Self) -> Filenames<Self> {
- <Self as MessageExt<'o, Owner>>::filenames(self)
+ <Self as MessageExt<'o, O>>::filenames(self)
}
pub fn filename(self: &Self) -> PathBuf {
@@ -97,7 +103,7 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
pub fn tags(&self) -> Tags<Self> {
- <Self as MessageExt<'o, Owner>>::tags(self)
+ <Self as MessageExt<'o, O>>::tags(self)
}
pub fn add_tag(self: &Self, tag: &str) -> Status {
@@ -115,10 +121,14 @@ impl<'o, Owner: MessageOwner + 'o> Message<'o, Owner> {
}
}
-pub trait MessageExt<'o, Owner: MessageOwner + 'o> {
- fn tags<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(
- message: S,
- ) -> Tags<'s, Message<'o, Owner>> {
+pub trait MessageExt<'o, O>
+where
+ O: MessageOwner + 'o,
+{
+ fn tags<'s, S>(message: S) -> Tags<'s, Message<'o, O>>
+ where
+ S: Into<Supercow<'s, Message<'o, O>>>,
+ {
let messageref = message.into();
Tags::from_ptr(
unsafe { ffi::notmuch_message_get_tags(messageref.handle.ptr) },
@@ -126,9 +136,10 @@ pub trait MessageExt<'o, Owner: MessageOwner + 'o> {
)
}
- fn replies<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(
- message: S,
- ) -> Messages<'s, Message<'o, Owner>> {
+ fn replies<'s, S>(message: S) -> Messages<'s, Message<'o, O>>
+ where
+ S: Into<Supercow<'s, Message<'o, O>>>,
+ {
let messageref = message.into();
Messages::from_ptr(
unsafe { ffi::notmuch_message_get_replies(messageref.handle.ptr) },
@@ -136,9 +147,10 @@ pub trait MessageExt<'o, Owner: MessageOwner + 'o> {
)
}
- fn filenames<'s, S: Into<Supercow<'s, Message<'o, Owner>>>>(
- message: S,
- ) -> Filenames<'s, Message<'o, Owner>> {
+ fn filenames<'s, S>(message: S) -> Filenames<'s, Message<'o, O>>
+ where
+ S: Into<Supercow<'s, Message<'o, O>>>,
+ {
let messageref = message.into();
Filenames::from_ptr(
unsafe { ffi::notmuch_message_get_filenames(messageref.handle.ptr) },
@@ -147,7 +159,7 @@ pub trait MessageExt<'o, Owner: MessageOwner + 'o> {
}
}
-impl<'o, Owner: MessageOwner + 'o> MessageExt<'o, Owner> for Message<'o, Owner> {}
+impl<'o, O> MessageExt<'o, O> for Message<'o, O> where O: MessageOwner + 'o {}
-unsafe impl<'o, Owner: MessageOwner + 'o> Send for Message<'o, Owner> {}
-unsafe impl<'o, Owner: MessageOwner + 'o> Sync for Message<'o, Owner> {}
+unsafe impl<'o, O> Send for Message<'o, O> where O: MessageOwner + 'o {}
+unsafe impl<'o, O> Sync for Message<'o, O> where O: MessageOwner + 'o {}