Reduce the DocumentId size from 64 to 32bits

This commit is contained in:
Kerollmops
2020-05-19 13:53:31 +02:00
parent 3bca31856d
commit 788e2202c9
12 changed files with 33 additions and 32 deletions

View File

@ -26,16 +26,16 @@ impl<'a> BytesDecode<'a> for DocumentsIds {
pub struct DiscoverIds<'a> {
ids_iter: std::slice::Iter<'a, DocumentId>,
left_id: Option<u64>,
right_id: Option<u64>,
available_range: std::ops::Range<u64>,
left_id: Option<u32>,
right_id: Option<u32>,
available_range: std::ops::Range<u32>,
}
impl DiscoverIds<'_> {
pub fn new(ids: &Set<DocumentId>) -> DiscoverIds {
let mut ids_iter = ids.iter();
let right_id = ids_iter.next().map(|id| id.0);
let available_range = 0..right_id.unwrap_or(u64::max_value());
let available_range = 0..right_id.unwrap_or(u32::max_value());
DiscoverIds { ids_iter, left_id: None, right_id, available_range }
}
}
@ -49,7 +49,7 @@ impl Iterator for DiscoverIds<'_> {
// The available range gives us a new id, we return it.
Some(id) => return Some(DocumentId(id)),
// The available range is exhausted, we need to find the next one.
None if self.available_range.end == u64::max_value() => return None,
None if self.available_range.end == u32::max_value() => return None,
None => loop {
self.left_id = self.right_id.take();
self.right_id = self.ids_iter.next().map(|id| id.0);
@ -61,9 +61,9 @@ impl Iterator for DiscoverIds<'_> {
break;
},
// The last used id has been reached, we can use all ids
// until u64 MAX
// until u32 MAX
(Some(l), None) => {
self.available_range = l.saturating_add(1)..u64::max_value();
self.available_range = l.saturating_add(1)..u32::max_value();
break;
},
_ => (),