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, + } + } }