Skip to main content

weavatrix_memory/domain/
view.rs

1use super::{MemoryFact, MemoryNode};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5pub struct MemoryView {
6    pub nodes: Vec<MemoryNode>,
7    pub facts: Vec<MemoryFact>,
8}
9
10#[derive(Debug, Clone, Default, PartialEq, Eq)]
11pub struct MemoryViewRef<'a> {
12    pub nodes: Vec<&'a MemoryNode>,
13    pub facts: Vec<&'a MemoryFact>,
14}
15
16impl MemoryViewRef<'_> {
17    #[must_use]
18    pub fn into_owned(self) -> MemoryView {
19        MemoryView {
20            nodes: self.nodes.into_iter().cloned().collect(),
21            facts: self.facts.into_iter().cloned().collect(),
22        }
23    }
24}