linked_data/ser/
properties.rs1use rdf_syntax::Term;
2
3use crate::LinkedDataSerializer;
4
5pub trait SerializeLinkedDataPropertiesWith<Q, R: Clone + Ord = Term> {
6 fn serialize_rdf_properties_with<S>(
7 &self,
8 state: Q,
9 serializer: S,
10 graph: Option<&R>,
11 subject: &R,
12 ) -> Result<S::Ok, S::Error>
13 where
14 S: LinkedDataSerializer<R>;
15}
16
17pub trait SerializeLinkedDataProperties<R: Clone + Ord = Term> {
18 fn serialize_rdf_properties<S>(
19 &self,
20 serializer: S,
21 graph: Option<&R>,
22 subject: &R,
23 ) -> Result<S::Ok, S::Error>
24 where
25 S: LinkedDataSerializer<R>;
26}
27
28impl<Q, R: Clone + Ord, T: SerializeLinkedDataPropertiesWith<Q, R>>
29 SerializeLinkedDataPropertiesWith<Q, R> for &T
30{
31 fn serialize_rdf_properties_with<S>(
32 &self,
33 state: Q,
34 serializer: S,
35 graph: Option<&R>,
36 subject: &R,
37 ) -> Result<S::Ok, S::Error>
38 where
39 S: LinkedDataSerializer<R>,
40 {
41 T::serialize_rdf_properties_with(*self, state, serializer, graph, subject)
42 }
43}
44
45impl<R: Clone + Ord, T: SerializeLinkedDataProperties<R>> SerializeLinkedDataProperties<R> for &T {
46 fn serialize_rdf_properties<S>(
47 &self,
48 serializer: S,
49 graph: Option<&R>,
50 subject: &R,
51 ) -> Result<S::Ok, S::Error>
52 where
53 S: LinkedDataSerializer<R>,
54 {
55 T::serialize_rdf_properties(*self, serializer, graph, subject)
56 }
57}
58
59impl<Q, R: Clone + Ord, T: SerializeLinkedDataPropertiesWith<Q, R>>
60 SerializeLinkedDataPropertiesWith<Q, R> for Option<T>
61{
62 fn serialize_rdf_properties_with<S>(
63 &self,
64 state: Q,
65 serializer: S,
66 graph: Option<&R>,
67 subject: &R,
68 ) -> Result<S::Ok, S::Error>
69 where
70 S: LinkedDataSerializer<R>,
71 {
72 match self {
73 Some(t) => t.serialize_rdf_properties_with(state, serializer, graph, subject),
74 None => serializer.end(),
75 }
76 }
77}
78
79impl<R: Clone + Ord, T: SerializeLinkedDataProperties<R>> SerializeLinkedDataProperties<R>
80 for Option<T>
81{
82 fn serialize_rdf_properties<S>(
83 &self,
84 serializer: S,
85 graph: Option<&R>,
86 subject: &R,
87 ) -> Result<S::Ok, S::Error>
88 where
89 S: LinkedDataSerializer<R>,
90 {
91 match self {
92 Some(t) => t.serialize_rdf_properties(serializer, graph, subject),
93 None => serializer.end(),
94 }
95 }
96}