aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk Van Haerenborgh <vhdirk@gmail.com>2018-12-15 15:28:54 +0100
committerDirk Van Haerenborgh <vhdirk@gmail.com>2018-12-15 15:28:54 +0100
commitc94fd1bbaf85446e04c01fceef3b8e5471e2cbea (patch)
tree4a82ea3e4b2ac86b6d0c5535b53319ed66614b4c
parent16704244a19bf896ce2d42c4dfb63feb5ac319c5 (diff)
downloadmail-c94fd1bbaf85446e04c01fceef3b8e5471e2cbea.tar.gz
re-add erroneously removed messages iterator
-rw-r--r--src/messages.rs26
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,