From b477b641cea83010337735b0fb436b1cd54c3f3e Mon Sep 17 00:00:00 2001 From: Chris Mikkelson Date: Sun, 7 Apr 2024 13:08:03 -0500 Subject: [PATCH] Iter::filter_seek: consume source iterator --- src/iter.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/iter.rs b/src/iter.rs index 47b4b85..034344e 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -18,7 +18,7 @@ pub trait Iter: Iterator + Sized { } // provided methods - fn filter_seek(&mut self, filter: F) -> impl Iter + fn filter_seek(self, filter: F) -> impl Iter where F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, { @@ -88,14 +88,13 @@ pub enum FilterSeekResult { } pub use FilterSeekResult::*; -struct FilterSeek<'i, I: Iterator, F: FnMut(&Entry, &mut Vec) -> FilterSeekResult> -{ - inner: &'i mut I, +struct FilterSeek, F: FnMut(&Entry, &mut Vec) -> FilterSeekResult> { + inner: I, filter_func: F, seek_key: Vec, } -impl<'i, I, F> Iterator for FilterSeek<'i, I, F> +impl Iterator for FilterSeek where F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, I: Iter, @@ -115,7 +114,7 @@ where } } -impl<'i, I, F> Iter for FilterSeek<'i, I, F> +impl Iter for FilterSeek where F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, I: Iter, @@ -154,7 +153,7 @@ mod test { #[test] fn test_iter_filter() { - let mut ti = TestIter(0); + let ti = TestIter(0); let v: Vec = ti .filter_seek(|e, k| { let b = e.key[0]; -- 2.50.1