diff options
| author | Dirk Van Haerenborgh <vhdirk@gmail.com> | 2018-12-15 15:28:54 +0100 |
|---|---|---|
| committer | Dirk Van Haerenborgh <vhdirk@gmail.com> | 2018-12-15 15:28:54 +0100 |
| commit | c94fd1bbaf85446e04c01fceef3b8e5471e2cbea (patch) | |
| tree | 4a82ea3e4b2ac86b6d0c5535b53319ed66614b4c | |
| parent | 16704244a19bf896ce2d42c4dfb63feb5ac319c5 (diff) | |
| download | mail-c94fd1bbaf85446e04c01fceef3b8e5471e2cbea.tar.gz | |
re-add erroneously removed messages iterator
| -rw-r--r-- | src/messages.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/messages.rs b/src/messages.rs index 69b6dcc..64b4090 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -3,6 +3,7 @@ use std::ops::Drop; use crate::ffi; use crate::utils::ScopedPhantomcow; use crate::MessageOwner; +use crate::Message; use crate::Tags; use crate::TagsOwner; @@ -69,6 +70,31 @@ where } } +impl<'o, O> Iterator for Messages<'o, O> +where + O: MessageOwner + 'o, +{ + type Item = Message<'o, O>; + + fn next(&mut self) -> Option<Self::Item> { + let valid = unsafe { ffi::notmuch_messages_valid(self.handle.ptr) }; + + if valid == 0 { + return None; + } + + let cthrd = unsafe { + let thrd = ffi::notmuch_messages_get(self.handle.ptr); + ffi::notmuch_messages_move_to_next(self.handle.ptr); + thrd + }; + + Some(Message::from_ptr(cthrd, ScopedPhantomcow::<'o, O>::share(&mut self.marker))) + } +} + + + pub trait MessagesExt<'o, O> where O: MessageOwner + 'o, |
