1use std::convert::Infallible;
2
3use crate::ser;
4
5pub struct NoopDeSerializer<Ok, Err> {
7 _infallible: Infallible,
8 _marker: std::marker::PhantomData<(Ok, Err)>,
9}
10
11impl<Ok, Err: ser::Error> crate::ser::SerializeSeq for NoopDeSerializer<Ok, Err> {
12 type Ok = Ok;
13
14 type Error = Err;
15
16 fn serialize_element<V: ser::Serialize>(&mut self, _: &V) -> Result<Self::Ok, Self::Error> {
17 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
18 }
19
20 fn end(self) -> Result<Self::Ok, Self::Error> {
21 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
22 }
23}
24
25impl<Ok, Err: ser::Error> crate::ser::SerializeAttributes for NoopDeSerializer<Ok, Err> {
26 type Ok = Ok;
27
28 type Error = Err;
29
30 fn serialize_attribute<A: ser::SerializeAttribute>(
31 &mut self,
32 _a: &A,
33 ) -> Result<Self::Ok, Self::Error> {
34 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
35 }
36}
37
38impl<Ok, Err: ser::Error> crate::ser::SerializeElementAttributes for NoopDeSerializer<Ok, Err> {
39 type ChildrenSerializeSeq = NoopDeSerializer<Ok, Err>;
40
41 fn serialize_children(self) -> Result<Self::ChildrenSerializeSeq, Self::Error> {
42 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
43 }
44
45 fn end(self) -> Result<Self::Ok, Self::Error> {
46 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
47 }
48}
49
50impl<Ok, Err: ser::Error> crate::ser::SerializeElement for NoopDeSerializer<Ok, Err> {
51 type Ok = Ok;
52
53 type Error = Err;
54
55 type ChildrenSerializeSeq = NoopDeSerializer<Ok, Err>;
56
57 type SerializeElementAttributes = NoopDeSerializer<Ok, Err>;
58
59 fn include_prefix(
60 &mut self,
61 _should_enforce: crate::ser::IncludePrefix,
62 ) -> Result<Self::Ok, Self::Error> {
63 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
64 }
65
66 fn preferred_prefix(
67 &mut self,
68 _preferred_prefix: Option<crate::Prefix<'_>>,
69 ) -> Result<Self::Ok, Self::Error> {
70 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
71 }
72
73 fn serialize_attributes(self) -> Result<Self::SerializeElementAttributes, Self::Error> {
74 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
75 }
76
77 fn serialize_children(self) -> Result<Self::ChildrenSerializeSeq, Self::Error> {
78 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
79 }
80
81 fn end(self) -> Result<Self::Ok, Self::Error> {
82 unreachable!("Self has infallible child - cannot be constructed and thus cannot be used.")
83 }
84}