diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ffi.rs | 9 | ||||
| -rw-r--r-- | src/query.rs | 19 |
2 files changed, 16 insertions, 12 deletions
@@ -751,9 +751,12 @@ extern { /// If a Xapian exception occurs this function will return NULL. /// /// @since libnotmuch 4.2 (notmuch 0.20) - pub fn notmuch_query_search_messages( - query: *mut notmuch_query_t, - ) -> *mut notmuch_messages_t; + pub fn notmuch_query_search_messages(query: *mut notmuch_query_t, + out: *mut *mut notmuch_messages_t) + -> notmuch_status_t; + pub fn notmuch_query_search_messages_st(query: *mut notmuch_query_t, + out: *mut *mut notmuch_messages_t) + -> notmuch_status_t; /// Destroy a `notmuch_query_t` along with any associated resources. /// diff --git a/src/query.rs b/src/query.rs index 2fbe031..654d4c6 100644 --- a/src/query.rs +++ b/src/query.rs @@ -28,18 +28,19 @@ impl<'d> Query<'d> { } /// Filter messages according to the query and return - pub fn search_messages(self: &Self) -> std::result::Result<Messages, ()> + pub fn search_messages(self: &Self) -> Result<Option<Messages>> { let mut msgs = ptr::null_mut(); - unsafe { - msgs = ffi::notmuch_query_search_messages(self.0); - } - if !msgs.is_null() { - return Ok(Messages::new(msgs)); - }else{ - return Err(()); + try!(unsafe { + ffi::notmuch_query_search_messages( + self.0, &mut msgs, + ) + }.as_result()); + + match msgs.is_null() { + false => Ok(None), + true => Ok(Some(Messages::new(msgs))), } - } } |
