diff options
| author | Dirk Van Haerenborgh <vhdirk@gmail.com> | 2019-10-25 09:52:00 +0200 |
|---|---|---|
| committer | Dirk Van Haerenborgh <vhdirk@gmail.com> | 2019-10-25 09:52:00 +0200 |
| commit | 9d3eaa7aa7e2be84e150075fb12e97083d7c61f8 (patch) | |
| tree | 0a37df89edab79f930a01d686ba65c3bc5dd8ff1 /src/message.rs | |
| parent | 51f063aaf2cab590a6cfe42e1da3f7bbd6423ba5 (diff) | |
| download | mail-9d3eaa7aa7e2be84e150075fb12e97083d7c61f8.tar.gz | |
implement message_properties
Diffstat (limited to 'src/message.rs')
| -rw-r--r-- | src/message.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/message.rs b/src/message.rs index 77aecc3..b4eacc8 100644 --- a/src/message.rs +++ b/src/message.rs @@ -9,6 +9,7 @@ use utils::{ToStr, ScopedPhantomcow, ScopedSupercow}; use Filenames; use FilenamesOwner; use Messages; +use MessageProperties; use Tags; use TagsOwner; use IndexOpts; @@ -131,6 +132,11 @@ where pub fn thaw(self: &Self) -> Result<()> { unsafe { ffi::notmuch_message_thaw(self.ptr) }.as_result() } + + pub fn get_properties<'m>(&'m self, key: &str, exact: bool) -> MessageProperties<'m, 'o, O> + { + <Self as MessageExt<'o, O>>::get_properties(self, key, exact) + } } pub trait MessageExt<'o, O> @@ -169,6 +175,20 @@ where Supercow::phantom(messageref), ) } + + fn get_properties<'m, M>(message: M, key: &str, exact: bool) -> MessageProperties<'m, 'o, O> + where + M: Into<ScopedSupercow<'m, Message<'o, O>>>, + { + let messageref = message.into(); + let key_str = CString::new(key).unwrap(); + + let props = unsafe { + ffi::notmuch_message_get_properties(messageref.ptr, key_str.as_ptr(), exact as i32) + }; + + MessageProperties::from_ptr(props, Supercow::phantom(messageref)) + } } impl<'o, O> MessageExt<'o, O> for Message<'o, O> where O: MessageOwner + 'o {} |
