diff --git a/brood/src/data.rs b/brood/src/data.rs
index d685029..294d0dd 100644
--- a/brood/src/data.rs
+++ b/brood/src/data.rs
@@ -89,6 +89,19 @@ impl Page<()> {
}
}
+impl
Page
{
+ pub fn change_data(self, data: P2) -> Page {
+ 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)]
pub struct Link {
pub to: u32,
@@ -120,7 +133,18 @@ impl Link<()> {
}
}
-#[derive(Debug, Serialize, Deserialize)]
+impl Link
{
+ pub fn change_data(self, data: P2) -> Link {
+ Link {
+ to: self.to,
+ start: self.start,
+ end: self.end,
+ data,
+ }
+ }
+}
+
+#[derive(Debug, Default, Serialize, Deserialize)]
pub struct AdjacencyList {
pub pages: Vec>,
pub links: Vec>,
@@ -185,4 +209,30 @@ impl AdjacencyList
{
}
}
}
+
+ pub fn change_page_data(self, data: P2) -> AdjacencyList {
+ let pages = self
+ .pages
+ .into_iter()
+ .map(|p| p.change_data(data.clone()))
+ .collect::>();
+
+ AdjacencyList {
+ pages,
+ links: self.links,
+ }
+ }
+
+ pub fn change_link_data(self, data: L2) -> AdjacencyList {
+ let links = self
+ .links
+ .into_iter()
+ .map(|l| l.change_data(data.clone()))
+ .collect::>();
+
+ AdjacencyList {
+ pages: self.pages,
+ links,
+ }
+ }
}