aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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,