1 use super::plumbing::*;
2 
3 pub(super) struct NoopConsumer;
4 
5 impl<T> Consumer<T> for NoopConsumer {
6     type Folder = NoopConsumer;
7     type Reducer = NoopReducer;
8     type Result = ();
9 
split_at(self, _index: usize) -> (Self, Self, NoopReducer)10     fn split_at(self, _index: usize) -> (Self, Self, NoopReducer) {
11         (NoopConsumer, NoopConsumer, NoopReducer)
12     }
13 
into_folder(self) -> Self14     fn into_folder(self) -> Self {
15         self
16     }
17 
full(&self) -> bool18     fn full(&self) -> bool {
19         false
20     }
21 }
22 
23 impl<T> Folder<T> for NoopConsumer {
24     type Result = ();
25 
consume(self, _item: T) -> Self26     fn consume(self, _item: T) -> Self {
27         self
28     }
29 
consume_iter<I>(self, iter: I) -> Self where I: IntoIterator<Item = T>,30     fn consume_iter<I>(self, iter: I) -> Self
31     where
32         I: IntoIterator<Item = T>,
33     {
34         iter.into_iter().for_each(drop);
35         self
36     }
37 
complete(self)38     fn complete(self) {}
39 
full(&self) -> bool40     fn full(&self) -> bool {
41         false
42     }
43 }
44 
45 impl<T> UnindexedConsumer<T> for NoopConsumer {
split_off_left(&self) -> Self46     fn split_off_left(&self) -> Self {
47         NoopConsumer
48     }
49 
to_reducer(&self) -> NoopReducer50     fn to_reducer(&self) -> NoopReducer {
51         NoopReducer
52     }
53 }
54 
55 pub(super) struct NoopReducer;
56 
57 impl Reducer<()> for NoopReducer {
reduce(self, _left: (), _right: ())58     fn reduce(self, _left: (), _right: ()) {}
59 }
60