tantivy/indexer/
doc_opstamp_mapping.rs1use crate::{DocId, Opstamp};
2
3#[derive(Clone)]
19pub enum DocToOpstampMapping<'a> {
20 WithMap(&'a [Opstamp]),
21 None,
22}
23
24impl DocToOpstampMapping<'_> {
25 pub fn is_deleted(&self, doc_id: DocId, delete_opstamp: Opstamp) -> bool {
31 match self {
32 Self::WithMap(doc_opstamps) => {
33 let doc_opstamp = doc_opstamps[doc_id as usize];
34 doc_opstamp < delete_opstamp
35 }
36 Self::None => true,
37 }
38 }
39}
40
41#[cfg(test)]
42mod tests {
43
44 use super::DocToOpstampMapping;
45
46 #[test]
47 fn test_doc_to_opstamp_mapping_none() {
48 let doc_to_opstamp_mapping = DocToOpstampMapping::None;
49 assert!(doc_to_opstamp_mapping.is_deleted(1u32, 0u64));
50 assert!(doc_to_opstamp_mapping.is_deleted(1u32, 2u64));
51 }
52
53 #[test]
54 fn test_doc_to_opstamp_mapping_with_map() {
55 let doc_to_opstamp_mapping = DocToOpstampMapping::WithMap(&[5u64, 1u64, 0u64, 4u64, 3u64]);
56 assert_eq!(doc_to_opstamp_mapping.is_deleted(0u32, 2u64), false);
57 assert_eq!(doc_to_opstamp_mapping.is_deleted(1u32, 2u64), true);
58 assert_eq!(doc_to_opstamp_mapping.is_deleted(2u32, 2u64), true);
59 assert_eq!(doc_to_opstamp_mapping.is_deleted(3u32, 2u64), false);
60 assert_eq!(doc_to_opstamp_mapping.is_deleted(4u32, 2u64), false);
61 }
62}