Skip to main content

linked_data/ser/
unordered.rs

1use crate::RdfUnordered;
2
3use super::{LinkedDataSerializer, SerializeLinkedData};
4
5impl<R: Clone + Ord, T: SerializeLinkedDataUnordered<R>> SerializeLinkedData<R>
6	for RdfUnordered<T>
7{
8	fn serialize_rdf<S>(&self, serializer: S, graph: Option<&R>) -> Result<S::Ok, S::Error>
9	where
10		S: LinkedDataSerializer<R>,
11	{
12		self.0.serialize_rdf_unordered(serializer, graph)
13	}
14}
15
16pub trait SerializeLinkedDataUnordered<R: Clone + Ord> {
17	fn serialize_rdf_unordered<S>(
18		&self,
19		serializer: S,
20		graph: Option<&R>,
21	) -> Result<S::Ok, S::Error>
22	where
23		S: LinkedDataSerializer<R>;
24}
25
26impl<R: Clone + Ord, T: ?Sized + SerializeLinkedDataUnordered<R>> SerializeLinkedDataUnordered<R>
27	for &T
28{
29	fn serialize_rdf_unordered<S>(
30		&self,
31		serializer: S,
32		graph: Option<&R>,
33	) -> Result<S::Ok, S::Error>
34	where
35		S: LinkedDataSerializer<R>,
36	{
37		T::serialize_rdf_unordered(*self, serializer, graph)
38	}
39}
40
41impl<R: Clone + Ord, T: SerializeLinkedData<R>> SerializeLinkedDataUnordered<R> for [T] {
42	fn serialize_rdf_unordered<S>(
43		&self,
44		mut serializer: S,
45		graph: Option<&R>,
46	) -> Result<S::Ok, S::Error>
47	where
48		S: LinkedDataSerializer<R>,
49	{
50		for item in self {
51			item.serialize_rdf(serializer.as_dyn_mut(), graph)?;
52		}
53
54		serializer.end()
55	}
56}
57
58impl<R: Clone + Ord, T: SerializeLinkedData<R>> SerializeLinkedDataUnordered<R> for Vec<T> {
59	fn serialize_rdf_unordered<S>(
60		&self,
61		serializer: S,
62		graph: Option<&R>,
63	) -> Result<S::Ok, S::Error>
64	where
65		S: LinkedDataSerializer<R>,
66	{
67		self.as_slice().serialize_rdf_unordered(serializer, graph)
68	}
69}