Add PageIdx::MAX
This commit is contained in:
parent
7a2372fedd
commit
17b118693f
3 changed files with 12 additions and 4 deletions
|
|
@ -18,7 +18,7 @@ impl DijkstraPageInfo {
|
||||||
fn from_page_info(info: PageInfo) -> Self {
|
fn from_page_info(info: PageInfo) -> Self {
|
||||||
Self {
|
Self {
|
||||||
cost: u32::MAX,
|
cost: u32::MAX,
|
||||||
prev: PageIdx(u32::MAX),
|
prev: PageIdx::MAX,
|
||||||
redirect: info.redirect,
|
redirect: info.redirect,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -131,7 +131,7 @@ fn find_longest_shortest_path(
|
||||||
loop {
|
loop {
|
||||||
steps.push(at);
|
steps.push(at);
|
||||||
at = data.page(at).data.prev;
|
at = data.page(at).data.prev;
|
||||||
if at == PageIdx(u32::MAX) {
|
if at == PageIdx::MAX {
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ impl DijkstraPageInfo {
|
||||||
fn from_page_info(info: PageInfo) -> Self {
|
fn from_page_info(info: PageInfo) -> Self {
|
||||||
Self {
|
Self {
|
||||||
cost: u32::MAX,
|
cost: u32::MAX,
|
||||||
prev: PageIdx(u32::MAX),
|
prev: PageIdx::MAX,
|
||||||
redirect: info.redirect,
|
redirect: info.redirect,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +122,7 @@ fn dijkstra(
|
||||||
loop {
|
loop {
|
||||||
steps.push(at);
|
steps.push(at);
|
||||||
at = data.page(at).data.prev;
|
at = data.page(at).data.prev;
|
||||||
if at == PageIdx(u32::MAX) {
|
if at == PageIdx::MAX {
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ pub const SENTINEL_PAGE_MARKER: &str = "Q2AKO3OYzyitmCJURghJ";
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
pub struct PageIdx(pub u32);
|
pub struct PageIdx(pub u32);
|
||||||
|
|
||||||
|
impl PageIdx {
|
||||||
|
pub const MAX: PageIdx = PageIdx(u32::MAX);
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
pub struct LinkIdx(pub u32);
|
pub struct LinkIdx(pub u32);
|
||||||
|
|
||||||
|
|
@ -61,6 +65,10 @@ impl<P, L> AdjacencyList<P, L> {
|
||||||
&mut self.pages[idx.0 as usize]
|
&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> {
|
pub fn link_range(&self, idx: PageIdx) -> impl DoubleEndedIterator<Item = LinkIdx> {
|
||||||
let start_idx = self.page(idx).start;
|
let start_idx = self.page(idx).start;
|
||||||
let end_idx = self.page(PageIdx(idx.0 + 1)).start;
|
let end_idx = self.page(PageIdx(idx.0 + 1)).start;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue