rdf_model/alloc/
heap_triple.rs

1// This is free and unencumbered software released into the public domain.
2
3use crate::{HeapTerm, Statement, Term};
4
5/// A heap-allocated triple statement.
6#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub struct HeapTriple {
9    s: HeapTerm,
10    p: HeapTerm,
11    o: HeapTerm,
12}
13
14impl Statement for HeapTriple {
15    fn subject(&self) -> &dyn Term {
16        &self.s
17    }
18
19    fn predicate(&self) -> &dyn Term {
20        &self.p
21    }
22
23    fn object(&self) -> &dyn Term {
24        &self.o
25    }
26}
27
28impl From<(HeapTerm, HeapTerm, HeapTerm)> for HeapTriple {
29    fn from((s, p, o): (HeapTerm, HeapTerm, HeapTerm)) -> Self {
30        Self { s, p, o }
31    }
32}