From 08fd951123fc5a63b9505d9007773cacd8765f0b Mon Sep 17 00:00:00 2001 From: Chris Mikkelson Date: Sun, 7 Apr 2024 15:04:53 -0500 Subject: [PATCH] Entries::filter_seek -> Entries::filter No longer need separate name due to Iterator co-implementation --- src/iter.rs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/iter.rs b/src/iter.rs index e4155af..56b4ad4 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -21,11 +21,11 @@ pub trait Entries: IntoIterator + Sized { } // provided methods - fn filter_seek(self, filter: F) -> impl Entries + fn filter(self, filter: F) -> impl Entries where - F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, + F: FnMut(&Entry, &mut Vec) -> FilterAction, { - FilterSeek { + Filter { inner: self, filter_func: filter, seek_key: Vec::new(), @@ -109,37 +109,37 @@ impl> Entries for WrapIter { } } -// FilterSeek +// Filter -pub enum FilterSeekResult { +pub enum FilterAction { Keep, Skip, Seek, } -pub use FilterSeekResult::*; +pub use FilterAction::*; -struct FilterSeek) -> FilterSeekResult> { +struct Filter) -> FilterAction> { inner: I, filter_func: F, seek_key: Vec, } -impl IntoIterator for FilterSeek +impl IntoIterator for Filter where - F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, + F: FnMut(&Entry, &mut Vec) -> FilterAction, I: Entries, { type Item = Entry; - type IntoIter = Iter>; + type IntoIter = Iter>; fn into_iter(self) -> Self::IntoIter { Iter(self) } } -impl Entries for FilterSeek +impl Entries for Filter where - F: FnMut(&Entry, &mut Vec) -> FilterSeekResult, + F: FnMut(&Entry, &mut Vec) -> FilterAction, I: Entries, { fn seek>(&mut self, key: T) { @@ -194,16 +194,16 @@ mod test { fn test_iter_filter() { let ti = TestIter(0); let v: Vec = ti - .filter_seek(|e, k| { + .filter(|e, k| { let b = e.key[0]; if b % 2 > 0 { if b < 60 { k.push((b + 1) * 4); - return FilterSeekResult::Seek; + return Seek; } - return FilterSeekResult::Skip; + return Skip; } - FilterSeekResult::Keep + Keep }) .into_iter() .filter(|e| e.key[0] % 5 == 0) -- 2.50.1