jsonld_core/deserialization/object/
mod.rs1mod 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}