diff options
Diffstat (limited to 'src/message.rs')
| -rw-r--r-- | src/message.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/message.rs b/src/message.rs index e69de29..d774043 100644 --- a/src/message.rs +++ b/src/message.rs @@ -0,0 +1,35 @@ +use std; +use std::{ + ops, + marker, + ptr, +}; + +use error::Result; + +use ffi; +use utils::{ + NewFromPtr, +}; +use Database; + +#[derive(Debug)] +pub struct Message<'d>( + pub(crate) *mut ffi::notmuch_message_t, + marker::PhantomData<&'d mut Database>, +); + +impl<'d> NewFromPtr<*mut ffi::notmuch_message_t> for Message<'d> { + fn new(ptr: *mut ffi::notmuch_message_t) -> Message<'d> { + Message(ptr, marker::PhantomData) + } +} + + +impl<'d> ops::Drop for Message<'d> { + fn drop(&mut self) { + unsafe { + ffi::notmuch_message_destroy(self.0) + }; + } +} |
