Skip to main content

jsonld_core/deserialization/object/
mod.rs

1mod list;
2mod node;
3mod value;
4
5use ld_core::{LinkedData, LinkedDataGraph, LinkedDataPredicateObjects, LinkedDataResource, LinkedDataSubject};
6use rdfx::Interpretation;
7
8use crate::Object;
9
10impl<T, B, I: Interpretation> LinkedDataResource<I> for Object<T, B>
11where
12    T: LinkedDataResource<I>,
13    B: LinkedDataResource<I>,
14{
15    fn interpretation(&self, interpretation: &mut I) -> ld_core::ResourceInterpretation<'_, I> {
16        match self {
17            Self::Node(node) => node.interpretation(interpretation),
18            Self::List(list) => list.interpretation(interpretation),
19            Self::Value(value) => value.interpretation(interpretation),
20        }
21    }
22}
23
24impl<T, B, I: Interpretation> LinkedDataSubject<I> for Object<T, B>
25where
26    T: LinkedDataResource<I> + LinkedDataSubject<I>,
27    B: LinkedDataResource<I> + LinkedDataSubject<I>,
28{
29    fn visit_subject<S>(&self, visitor: S) -> Result<S::Ok, S::Error>
30    where
31        S: ld_core::SubjectVisitor<I>,
32    {
33        match self {
34            Self::Node(node) => node.visit_subject(visitor),
35            Self::List(list) => list.visit_subject(visitor),
36            Self::Value(value) => value.visit_subject(visitor),
37        }
38    }
39}
40
41impl<T, B, I: Interpretation> LinkedDataPredicateObjects<I> for Object<T, B>
42where
43    T: LinkedDataResource<I> + LinkedDataSubject<I>,
44    B: LinkedDataResource<I> + LinkedDataSubject<I>,
45{
46    fn visit_objects<S>(&self, visitor: S) -> Result<S::Ok, S::Error>
47    where
48        S: ld_core::PredicateObjectsVisitor<I>,
49    {
50        match self {
51            Self::Node(node) => node.visit_objects(visitor),
52            Self::List(list) => list.visit_objects(visitor),
53            Self::Value(value) => value.visit_objects(visitor),
54        }
55    }
56}
57
58impl<T, B, I: Interpretation> LinkedDataGraph<I> for Object<T, B>
59where
60    T: LinkedDataResource<I> + LinkedDataSubject<I>,
61    B: LinkedDataResource<I> + LinkedDataSubject<I>,
62{
63    fn visit_graph<S>(&self, visitor: S) -> Result<S::Ok, S::Error>
64    where
65        S: ld_core::GraphVisitor<I>,
66    {
67        match self {
68            Self::Node(node) => node.visit_graph(visitor),
69            Self::List(list) => list.visit_graph(visitor),
70            Self::Value(value) => value.visit_graph(visitor),
71        }
72    }
73}
74
75impl<T, B, I: Interpretation> LinkedData<I> for Object<T, B>
76where
77    T: LinkedDataResource<I> + LinkedDataSubject<I>,
78    B: LinkedDataResource<I> + LinkedDataSubject<I>,
79{
80    fn visit<S>(&self, visitor: S) -> Result<S::Ok, S::Error>
81    where
82        S: ld_core::Visitor<I>,
83    {
84        match self {
85            Self::Node(node) => node.visit(visitor),
86            Self::List(list) => list.visit(visitor),
87            Self::Value(value) => value.visit(visitor),
88        }
89    }
90}