From c94fd1bbaf85446e04c01fceef3b8e5471e2cbea Mon Sep 17 00:00:00 2001 From: Dirk Van Haerenborgh Date: Sat, 15 Dec 2018 15:28:54 +0100 Subject: re-add erroneously removed messages iterator --- src/messages.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src') 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 { + 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, -- cgit v1.2.1