Add PageIdx::MAX

This commit is contained in:
Joscha 2024-08-25 22:04:55 +02:00
parent 7a2372fedd
commit 17b118693f
3 changed files with 12 additions and 4 deletions

View file

@ -5,6 +5,10 @@ pub const SENTINEL_PAGE_MARKER: &str = "Q2AKO3OYzyitmCJURghJ";
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct PageIdx(pub u32);
impl PageIdx {
pub const MAX: PageIdx = PageIdx(u32::MAX);
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct LinkIdx(pub u32);
@ -61,6 +65,10 @@ impl<P, L> AdjacencyList<P, L> {
&mut self.pages[idx.0 as usize]
}
pub fn pages_range(&self) -> impl DoubleEndedIterator<Item = PageIdx> {
(0..self.pages.len() as u32 - 1).map(PageIdx)
}
pub fn link_range(&self, idx: PageIdx) -> impl DoubleEndedIterator<Item = LinkIdx> {
let start_idx = self.page(idx).start;
let end_idx = self.page(PageIdx(idx.0 + 1)).start;