Change AdjacencyMap associated data
This commit is contained in:
parent
5656f65b6c
commit
345462915b
1 changed files with 51 additions and 1 deletions
|
|
@ -89,6 +89,19 @@ impl Page<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<P> Page<P> {
|
||||||
|
pub fn change_data<P2>(self, data: P2) -> Page<P2> {
|
||||||
|
Page {
|
||||||
|
link_idx: self.link_idx,
|
||||||
|
id: self.id,
|
||||||
|
length: self.length,
|
||||||
|
redirect: self.redirect,
|
||||||
|
title: self.title,
|
||||||
|
data,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||||
pub struct Link<L> {
|
pub struct Link<L> {
|
||||||
pub to: u32,
|
pub to: u32,
|
||||||
|
|
@ -120,7 +133,18 @@ impl Link<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
impl<P> Link<P> {
|
||||||
|
pub fn change_data<P2>(self, data: P2) -> Link<P2> {
|
||||||
|
Link {
|
||||||
|
to: self.to,
|
||||||
|
start: self.start,
|
||||||
|
end: self.end,
|
||||||
|
data,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default, Serialize, Deserialize)]
|
||||||
pub struct AdjacencyList<P, L> {
|
pub struct AdjacencyList<P, L> {
|
||||||
pub pages: Vec<Page<P>>,
|
pub pages: Vec<Page<P>>,
|
||||||
pub links: Vec<Link<L>>,
|
pub links: Vec<Link<L>>,
|
||||||
|
|
@ -185,4 +209,30 @@ impl<P, L> AdjacencyList<P, L> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn change_page_data<P2: Clone>(self, data: P2) -> AdjacencyList<P2, L> {
|
||||||
|
let pages = self
|
||||||
|
.pages
|
||||||
|
.into_iter()
|
||||||
|
.map(|p| p.change_data(data.clone()))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
AdjacencyList {
|
||||||
|
pages,
|
||||||
|
links: self.links,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn change_link_data<L2: Clone>(self, data: L2) -> AdjacencyList<P, L2> {
|
||||||
|
let links = self
|
||||||
|
.links
|
||||||
|
.into_iter()
|
||||||
|
.map(|l| l.change_data(data.clone()))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
AdjacencyList {
|
||||||
|
pages: self.pages,
|
||||||
|
links,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue