From 4e93c681c0c4ac0b83fc85f4fee09bbe27fb15c8 Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Wed, 25 Nov 2020 14:13:22 +0900 Subject: [PATCH] Removed the SegmentCollector type from the Generics of the FilterCollector --- src/collector/filter_collector_wrapper.rs | 26 +++++++++-------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/collector/filter_collector_wrapper.rs b/src/collector/filter_collector_wrapper.rs index 86b7a0501..5436833bc 100644 --- a/src/collector/filter_collector_wrapper.rs +++ b/src/collector/filter_collector_wrapper.rs @@ -9,8 +9,6 @@ // --- // Importing tantivy... -use std::marker::PhantomData; - use crate::collector::{Collector, SegmentCollector}; use crate::fastfield::FastFieldReader; use crate::schema::Field; @@ -55,48 +53,44 @@ use crate::{Score, SegmentReader, TantivyError}; /// /// assert_eq!(filtered_top_docs.len(), 0); /// ``` -pub struct FilterCollector { +pub struct FilterCollector { field: Field, collector: TCollector, predicate: &'static (dyn Fn(u64) -> bool + Send + Sync), - phantom: PhantomData, } -impl FilterCollector +impl FilterCollector where - TCollector: Collector + Send + Sync, - TSegmentCollector: SegmentCollector + Send + Sync, + TCollector: Collector + Send + Sync, { pub fn new( field: Field, predicate: &'static (dyn Fn(u64) -> bool + Send + Sync), collector: TCollector, - ) -> FilterCollector { + ) -> FilterCollector { FilterCollector { field, predicate, collector, - phantom: PhantomData, } } } -impl Collector for FilterCollector +impl Collector for FilterCollector where - TSegmentCollector: SegmentCollector + Send + Sync, - TCollector: Collector + Send + Sync, + TCollector: Collector + Send + Sync, { // That's the type of our result. // Our standard deviation will be a float. type Fruit = TCollector::Fruit; - type Child = FilterSegmentCollector; + type Child = FilterSegmentCollector; fn for_segment( &self, segment_local_id: u32, segment_reader: &SegmentReader, - ) -> crate::Result> { + ) -> crate::Result> { let fast_field_reader = segment_reader .fast_fields() .u64(self.field) @@ -110,7 +104,7 @@ where let segment_collector = self .collector .for_segment(segment_local_id, segment_reader)?; - Ok(FilterSegmentCollector:: { + Ok(FilterSegmentCollector { fast_field_reader, segment_collector: segment_collector, predicate: self.predicate, @@ -137,7 +131,7 @@ pub struct FilterSegmentCollector { impl SegmentCollector for FilterSegmentCollector where - TSegmentCollector: SegmentCollector + Send + Sync, + TSegmentCollector: SegmentCollector, { type Fruit = TSegmentCollector::Fruit;