tobu/
de.rs

1use bytes::Bytes;
2use serde::de;
3use tobu_format::{
4    error::DecodeError,
5    wire::{Parser, WireField},
6};
7
8use crate::error::Error;
9
10pub struct Deserializer {
11    parser: Parser,
12    field: WireField,
13}
14
15impl Deserializer {
16    pub fn new(buf: Bytes) -> Result<Self, Error> {
17        let mut parser = Parser::new(buf);
18        let field = parser.next().unwrap_or(Err(DecodeError::Eof))?;
19        Ok(Deserializer { parser, field })
20    }
21
22    fn next(&mut self) -> Result<(), Error> {
23        self.field = self.parser.next().unwrap_or(Err(DecodeError::Eof))?;
24        Ok(())
25    }
26}
27
28impl<'de, 'r> de::Deserializer<'de> for &'r mut Deserializer {
29    type Error = Error;
30
31    fn deserialize_any<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
32    where
33        V: de::Visitor<'de>,
34    {
35        todo!()
36    }
37
38    fn deserialize_bool<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
39    where
40        V: de::Visitor<'de>,
41    {
42        todo!()
43    }
44
45    fn deserialize_i8<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
46    where
47        V: de::Visitor<'de>,
48    {
49        todo!()
50    }
51
52    fn deserialize_i16<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
53    where
54        V: de::Visitor<'de>,
55    {
56        todo!()
57    }
58
59    fn deserialize_i32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
60    where
61        V: de::Visitor<'de>,
62    {
63        todo!()
64    }
65
66    fn deserialize_i64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
67    where
68        V: de::Visitor<'de>,
69    {
70        todo!()
71    }
72
73    fn deserialize_u8<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
74    where
75        V: de::Visitor<'de>,
76    {
77        todo!()
78    }
79
80    fn deserialize_u16<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
81    where
82        V: de::Visitor<'de>,
83    {
84        todo!()
85    }
86
87    fn deserialize_u32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
88    where
89        V: de::Visitor<'de>,
90    {
91        todo!()
92    }
93
94    fn deserialize_u64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
95    where
96        V: de::Visitor<'de>,
97    {
98        todo!()
99    }
100
101    fn deserialize_f32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
102    where
103        V: de::Visitor<'de>,
104    {
105        todo!()
106    }
107
108    fn deserialize_f64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
109    where
110        V: de::Visitor<'de>,
111    {
112        todo!()
113    }
114
115    fn deserialize_char<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
116    where
117        V: de::Visitor<'de>,
118    {
119        todo!()
120    }
121
122    fn deserialize_str<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
123    where
124        V: de::Visitor<'de>,
125    {
126        todo!()
127    }
128
129    fn deserialize_string<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
130    where
131        V: de::Visitor<'de>,
132    {
133        todo!()
134    }
135
136    fn deserialize_bytes<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
137    where
138        V: de::Visitor<'de>,
139    {
140        todo!()
141    }
142
143    fn deserialize_byte_buf<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
144    where
145        V: de::Visitor<'de>,
146    {
147        todo!()
148    }
149
150    fn deserialize_option<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
151    where
152        V: de::Visitor<'de>,
153    {
154        todo!()
155    }
156
157    fn deserialize_unit<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
158    where
159        V: de::Visitor<'de>,
160    {
161        todo!()
162    }
163
164    fn deserialize_unit_struct<V>(
165        self,
166        _name: &'static str,
167        _visitor: V,
168    ) -> Result<V::Value, Self::Error>
169    where
170        V: de::Visitor<'de>,
171    {
172        todo!()
173    }
174
175    fn deserialize_newtype_struct<V>(
176        self,
177        _name: &'static str,
178        _visitor: V,
179    ) -> Result<V::Value, Self::Error>
180    where
181        V: de::Visitor<'de>,
182    {
183        todo!()
184    }
185
186    fn deserialize_seq<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
187    where
188        V: de::Visitor<'de>,
189    {
190        todo!()
191    }
192
193    fn deserialize_tuple<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error>
194    where
195        V: de::Visitor<'de>,
196    {
197        todo!()
198    }
199
200    fn deserialize_tuple_struct<V>(
201        self,
202        _name: &'static str,
203        _len: usize,
204        _visitor: V,
205    ) -> Result<V::Value, Self::Error>
206    where
207        V: de::Visitor<'de>,
208    {
209        todo!()
210    }
211
212    fn deserialize_map<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
213    where
214        V: de::Visitor<'de>,
215    {
216        todo!()
217    }
218
219    fn deserialize_struct<V>(
220        self,
221        _name: &'static str,
222        _fields: &'static [&'static str],
223        visitor: V,
224    ) -> Result<V::Value, Self::Error>
225    where
226        V: de::Visitor<'de>,
227    {
228        let mut map = MapAccess { de: self };
229        visitor.visit_map(&mut map)
230    }
231
232    fn deserialize_enum<V>(
233        self,
234        _name: &'static str,
235        _variants: &'static [&'static str],
236        _visitor: V,
237    ) -> Result<V::Value, Self::Error>
238    where
239        V: de::Visitor<'de>,
240    {
241        todo!()
242    }
243
244    fn deserialize_identifier<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
245    where
246        V: de::Visitor<'de>,
247    {
248        todo!()
249    }
250
251    fn deserialize_ignored_any<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
252    where
253        V: de::Visitor<'de>,
254    {
255        todo!()
256    }
257}
258
259struct MapAccess<'r> {
260    de: &'r mut Deserializer,
261}
262
263impl<'de, 'r> de::MapAccess<'de> for MapAccess<'r> {
264    type Error = Error;
265
266    fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error>
267    where
268        K: de::DeserializeSeed<'de>,
269    {
270        seed.deserialize(&mut *self.de).map(Some)
271    }
272
273    fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error>
274    where
275        V: de::DeserializeSeed<'de>,
276    {
277        seed.deserialize(&mut *self.de)
278    }
279}