retriever/idxsets/
noidx.rs

1use crate::bits::bitfield::Bitfield;
2use crate::traits::idxset::IdxSet;
3
4/// An `IdxSet` containing nothing.
5#[derive(Clone)]
6pub struct NoIdx;
7
8impl Iterator for NoIdx {
9    type Item = Bitfield;
10
11    fn next(&mut self) -> Option<Self::Item> {
12        None
13    }
14}
15
16impl DoubleEndedIterator for NoIdx {
17    fn next_back(&mut self) -> Option<Self::Item> {
18        None
19    }
20}
21
22impl IdxSet for NoIdx {
23    type IdxIter = <Self as IntoIterator>::IntoIter;
24
25    fn into_idx_iter(self) -> Self::IdxIter {
26        self
27    }
28
29    fn size(&self) -> usize {
30        0
31    }
32
33    fn intersect(&self, idx: &Bitfield) -> Bitfield {
34        Bitfield::new_empty(idx.start())
35    }
36}