]> git.mikk.net Git - mtbl-rs/commitdiff
Iter::filter_seek: consume source iterator
authorChris Mikkelson <cmikk@fsi.io>
Sun, 7 Apr 2024 18:08:03 +0000 (13:08 -0500)
committerChris Mikkelson <cmikk@fsi.io>
Sun, 7 Apr 2024 18:08:03 +0000 (13:08 -0500)
src/iter.rs

index 47b4b85e64d7a0f227021301c2a666cbb7bf7803..034344e1347d98d70719112fa1a0a09d32cac5c2 100644 (file)
@@ -18,7 +18,7 @@ pub trait Iter: Iterator<Item = Entry> + Sized {
     }
 
     // provided methods
-    fn filter_seek<F>(&mut self, filter: F) -> impl Iter
+    fn filter_seek<F>(self, filter: F) -> impl Iter
     where
         F: FnMut(&Entry, &mut Vec<u8>) -> FilterSeekResult,
     {
@@ -88,14 +88,13 @@ pub enum FilterSeekResult {
 }
 pub use FilterSeekResult::*;
 
-struct FilterSeek<'i, I: Iterator<Item = Entry>, F: FnMut(&Entry, &mut Vec<u8>) -> FilterSeekResult>
-{
-    inner: &'i mut I,
+struct FilterSeek<I: Iterator<Item = Entry>, F: FnMut(&Entry, &mut Vec<u8>) -> FilterSeekResult> {
+    inner: I,
     filter_func: F,
     seek_key: Vec<u8>,
 }
 
-impl<'i, I, F> Iterator for FilterSeek<'i, I, F>
+impl<I, F> Iterator for FilterSeek<I, F>
 where
     F: FnMut(&Entry, &mut Vec<u8>) -> FilterSeekResult,
     I: Iter<Item = Entry>,
@@ -115,7 +114,7 @@ where
     }
 }
 
-impl<'i, I, F> Iter for FilterSeek<'i, I, F>
+impl<I, F> Iter for FilterSeek<I, F>
 where
     F: FnMut(&Entry, &mut Vec<u8>) -> FilterSeekResult,
     I: Iter<Item = Entry>,
@@ -154,7 +153,7 @@ mod test {
 
     #[test]
     fn test_iter_filter() {
-        let mut ti = TestIter(0);
+        let ti = TestIter(0);
         let v: Vec<Entry> = ti
             .filter_seek(|e, k| {
                 let b = e.key[0];