1use super::plumbing::*;
2
3pub(super) struct NoopConsumer;
4
5impl<T> Consumer<T> for NoopConsumer {
6 type Folder = NoopConsumer;
7 type Reducer = NoopReducer;
8 type Result = ();
9
10 fn split_at(self, _index: usize) -> (Self, Self, NoopReducer) {
11 (NoopConsumer, NoopConsumer, NoopReducer)
12 }
13
14 fn into_folder(self) -> Self {
15 self
16 }
17
18 fn full(&self) -> bool {
19 false
20 }
21}
22
23impl<T> Folder<T> for NoopConsumer {
24 type Result = ();
25
26 fn consume(self, _item: T) -> Self {
27 self
28 }
29
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
38 fn complete(self) {}
39
40 fn full(&self) -> bool {
41 false
42 }
43}
44
45impl<T> UnindexedConsumer<T> for NoopConsumer {
46 fn split_off_left(&self) -> Self {
47 NoopConsumer
48 }
49
50 fn to_reducer(&self) -> NoopReducer {
51 NoopReducer
52 }
53}
54
55pub(super) struct NoopReducer;
56
57impl Reducer<()> for NoopReducer {
58 fn reduce(self, _left: (), _right: ()) {}
59}
60