aboutsummaryrefslogtreecommitdiffstats
path: root/src/filenames.rs
diff options
context:
space:
mode:
authorDirk Van Haerenborgh <vhdirk@gmail.com>2018-12-20 08:21:03 +0100
committerDirk Van Haerenborgh <vhdirk@gmail.com>2018-12-20 08:21:03 +0100
commitbb8a60ddc9fdecc6c1004639514b538578e37532 (patch)
tree634968cabab56edec2f8a750903c155800a0f031 /src/filenames.rs
parent2baa9d13ad4c5c2c6e55b6ca49c92a4d2434fba7 (diff)
downloadmail-bb8a60ddc9fdecc6c1004639514b538578e37532.tar.gz
remove ptr indirection
Diffstat (limited to 'src/filenames.rs')
-rw-r--r--src/filenames.rs34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/filenames.rs b/src/filenames.rs
index 94eb5b7..a4440d3 100644
--- a/src/filenames.rs
+++ b/src/filenames.rs
@@ -9,29 +9,23 @@ use utils::ScopedPhantomcow;
pub trait FilenamesOwner {}
#[derive(Debug)]
-pub(crate) struct FilenamesPtr {
- pub ptr: *mut ffi::notmuch_filenames_t,
-}
-
-impl Drop for FilenamesPtr {
- fn drop(self: &mut Self) {
- let valid = unsafe { ffi::notmuch_filenames_valid(self.ptr) };
-
- if valid != 0 {
- unsafe { ffi::notmuch_filenames_destroy(self.ptr) };
- }
- }
-}
-
-#[derive(Debug)]
pub struct Filenames<'o, O>
where
O: FilenamesOwner + 'o,
{
- pub(crate) handle: FilenamesPtr,
+ pub(crate) ptr: *mut ffi::notmuch_filenames_t,
pub(crate) marker: ScopedPhantomcow<'o, O>,
}
+impl<'o, O> Drop for Filenames<'o, O>
+where
+ O: FilenamesOwner + 'o,
+{
+ fn drop(self: &mut Self) {
+ unsafe { ffi::notmuch_filenames_destroy(self.ptr) };
+ }
+}
+
impl<'o, O> Filenames<'o, O>
where
O: FilenamesOwner + 'o,
@@ -41,7 +35,7 @@ where
P: Into<ScopedPhantomcow<'o, O>>,
{
Filenames {
- handle: FilenamesPtr { ptr },
+ ptr,
marker: owner.into(),
}
}
@@ -54,15 +48,15 @@ where
type Item = PathBuf;
fn next(self: &mut Self) -> Option<Self::Item> {
- let valid = unsafe { ffi::notmuch_filenames_valid(self.handle.ptr) };
+ let valid = unsafe { ffi::notmuch_filenames_valid(self.ptr) };
if valid == 0 {
return None;
}
let ctag = unsafe {
- let t = ffi::notmuch_filenames_get(self.handle.ptr);
- ffi::notmuch_filenames_move_to_next(self.handle.ptr);
+ let t = ffi::notmuch_filenames_get(self.ptr);
+ ffi::notmuch_filenames_move_to_next(self.ptr);
CStr::from_ptr(t)
};