1
1
use std:: mem:: size_of;
2
2
use std:: str:: from_utf8;
3
3
4
+ use serde_core:: de:: {
5
+ DeserializeSeed , Deserializer , EnumAccess , IntoDeserializer , MapAccess , SeqAccess ,
6
+ VariantAccess , Visitor ,
7
+ } ;
8
+
4
9
use super :: Error ;
5
10
6
11
pub struct Decoder < ' de > {
@@ -60,7 +65,7 @@ macro_rules! impl_deserialize {
60
65
( $method: ident: $decode: ident => $visit: ident) => {
61
66
fn $method<V >( self , visitor: V ) -> Result <V :: Value , Self :: Error >
62
67
where
63
- V : serde :: de :: Visitor <' de>,
68
+ V : Visitor <' de>,
64
69
{
65
70
let value = self . $decode( ) ?;
66
71
@@ -69,26 +74,26 @@ macro_rules! impl_deserialize {
69
74
} ;
70
75
}
71
76
72
- impl < ' de > serde :: de :: Deserializer < ' de > for & mut Decoder < ' de > {
77
+ impl < ' de > Deserializer < ' de > for & mut Decoder < ' de > {
73
78
type Error = Box < Error > ;
74
79
75
80
fn deserialize_any < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
76
81
where
77
- V : serde :: de :: Visitor < ' de > ,
82
+ V : Visitor < ' de > ,
78
83
{
79
84
Error :: NotSupported . into ( )
80
85
}
81
86
82
87
fn deserialize_ignored_any < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
83
88
where
84
- V : serde :: de :: Visitor < ' de > ,
89
+ V : Visitor < ' de > ,
85
90
{
86
91
Error :: NotSupported . into ( )
87
92
}
88
93
89
94
fn deserialize_identifier < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
90
95
where
91
- V : serde :: de :: Visitor < ' de > ,
96
+ V : Visitor < ' de > ,
92
97
{
93
98
Error :: NotSupported . into ( )
94
99
}
@@ -110,7 +115,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
110
115
111
116
fn deserialize_bool < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
112
117
where
113
- V : serde :: de :: Visitor < ' de > ,
118
+ V : Visitor < ' de > ,
114
119
{
115
120
match self . decode_u8 ( ) ? {
116
121
0 => visitor. visit_bool ( false ) ,
@@ -121,7 +126,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
121
126
122
127
fn deserialize_char < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
123
128
where
124
- V : serde :: de :: Visitor < ' de > ,
129
+ V : Visitor < ' de > ,
125
130
{
126
131
let bits = self . decode_u32 ( ) ?;
127
132
@@ -134,7 +139,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
134
139
135
140
fn deserialize_bytes < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
136
141
where
137
- V : serde :: de :: Visitor < ' de > ,
142
+ V : Visitor < ' de > ,
138
143
{
139
144
let bytes = self . decode_bytes ( ) ?;
140
145
@@ -143,7 +148,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
143
148
144
149
fn deserialize_byte_buf < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
145
150
where
146
- V : serde :: de :: Visitor < ' de > ,
151
+ V : Visitor < ' de > ,
147
152
{
148
153
let bytes = self . decode_bytes ( ) ?;
149
154
@@ -152,7 +157,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
152
157
153
158
fn deserialize_str < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
154
159
where
155
- V : serde :: de :: Visitor < ' de > ,
160
+ V : Visitor < ' de > ,
156
161
{
157
162
let bytes = self . decode_bytes ( ) ?;
158
163
@@ -165,7 +170,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
165
170
166
171
fn deserialize_string < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
167
172
where
168
- V : serde :: de :: Visitor < ' de > ,
173
+ V : Visitor < ' de > ,
169
174
{
170
175
let bytes = self . decode_bytes ( ) ?;
171
176
@@ -178,7 +183,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
178
183
179
184
fn deserialize_unit < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
180
185
where
181
- V : serde :: de :: Visitor < ' de > ,
186
+ V : Visitor < ' de > ,
182
187
{
183
188
visitor. visit_unit ( )
184
189
}
@@ -189,7 +194,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
189
194
visitor : V ,
190
195
) -> Result < V :: Value , Self :: Error >
191
196
where
192
- V : serde :: de :: Visitor < ' de > ,
197
+ V : Visitor < ' de > ,
193
198
{
194
199
visitor. visit_unit ( )
195
200
}
@@ -200,14 +205,14 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
200
205
visitor : V ,
201
206
) -> Result < V :: Value , Self :: Error >
202
207
where
203
- V : serde :: de :: Visitor < ' de > ,
208
+ V : Visitor < ' de > ,
204
209
{
205
210
visitor. visit_newtype_struct ( self )
206
211
}
207
212
208
213
fn deserialize_option < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
209
214
where
210
- V : serde :: de :: Visitor < ' de > ,
215
+ V : Visitor < ' de > ,
211
216
{
212
217
match self . decode_u8 ( ) ? {
213
218
0 => visitor. visit_none ( ) ,
@@ -218,7 +223,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
218
223
219
224
fn deserialize_seq < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
220
225
where
221
- V : serde :: de :: Visitor < ' de > ,
226
+ V : Visitor < ' de > ,
222
227
{
223
228
let len = self . decode_u32 ( ) ?;
224
229
@@ -227,7 +232,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
227
232
228
233
fn deserialize_tuple < V > ( self , len : usize , visitor : V ) -> Result < V :: Value , Self :: Error >
229
234
where
230
- V : serde :: de :: Visitor < ' de > ,
235
+ V : Visitor < ' de > ,
231
236
{
232
237
visitor. visit_seq ( LimitedDecoder { this : self , len } )
233
238
}
@@ -239,14 +244,14 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
239
244
visitor : V ,
240
245
) -> Result < V :: Value , Self :: Error >
241
246
where
242
- V : serde :: de :: Visitor < ' de > ,
247
+ V : Visitor < ' de > ,
243
248
{
244
249
self . deserialize_tuple ( len, visitor)
245
250
}
246
251
247
252
fn deserialize_map < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
248
253
where
249
- V : serde :: de :: Visitor < ' de > ,
254
+ V : Visitor < ' de > ,
250
255
{
251
256
let len = self . decode_u32 ( ) ?;
252
257
@@ -263,7 +268,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
263
268
visitor : V ,
264
269
) -> Result < V :: Value , Self :: Error >
265
270
where
266
- V : serde :: de :: Visitor < ' de > ,
271
+ V : Visitor < ' de > ,
267
272
{
268
273
self . deserialize_tuple ( fields. len ( ) , visitor)
269
274
}
@@ -275,7 +280,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
275
280
visitor : V ,
276
281
) -> Result < V :: Value , Self :: Error >
277
282
where
278
- V : serde :: de :: Visitor < ' de > ,
283
+ V : Visitor < ' de > ,
279
284
{
280
285
visitor. visit_enum ( self )
281
286
}
@@ -290,12 +295,12 @@ struct LimitedDecoder<'a, 'de> {
290
295
len : usize ,
291
296
}
292
297
293
- impl < ' de > serde :: de :: SeqAccess < ' de > for LimitedDecoder < ' _ , ' de > {
298
+ impl < ' de > SeqAccess < ' de > for LimitedDecoder < ' _ , ' de > {
294
299
type Error = Box < Error > ;
295
300
296
301
fn next_element_seed < T > ( & mut self , seed : T ) -> Result < Option < T :: Value > , Self :: Error >
297
302
where
298
- T : serde :: de :: DeserializeSeed < ' de > ,
303
+ T : DeserializeSeed < ' de > ,
299
304
{
300
305
match self . len . checked_sub ( 1 ) {
301
306
Some ( len) => {
@@ -314,12 +319,12 @@ impl<'de> serde::de::SeqAccess<'de> for LimitedDecoder<'_, 'de> {
314
319
}
315
320
}
316
321
317
- impl < ' de > serde :: de :: MapAccess < ' de > for LimitedDecoder < ' _ , ' de > {
322
+ impl < ' de > MapAccess < ' de > for LimitedDecoder < ' _ , ' de > {
318
323
type Error = Box < Error > ;
319
324
320
325
fn next_key_seed < T > ( & mut self , seed : T ) -> Result < Option < T :: Value > , Self :: Error >
321
326
where
322
- T : serde :: de :: DeserializeSeed < ' de > ,
327
+ T : DeserializeSeed < ' de > ,
323
328
{
324
329
match self . len . checked_sub ( 1 ) {
325
330
Some ( len) => {
@@ -335,7 +340,7 @@ impl<'de> serde::de::MapAccess<'de> for LimitedDecoder<'_, 'de> {
335
340
336
341
fn next_value_seed < V > ( & mut self , seed : V ) -> Result < V :: Value , Self :: Error >
337
342
where
338
- V : serde :: de :: DeserializeSeed < ' de > ,
343
+ V : DeserializeSeed < ' de > ,
339
344
{
340
345
seed. deserialize ( & mut * self . this )
341
346
}
@@ -345,26 +350,25 @@ impl<'de> serde::de::MapAccess<'de> for LimitedDecoder<'_, 'de> {
345
350
}
346
351
}
347
352
348
- impl < ' de > serde :: de :: EnumAccess < ' de > for & mut Decoder < ' de > {
353
+ impl < ' de > EnumAccess < ' de > for & mut Decoder < ' de > {
349
354
type Error = Box < Error > ;
350
355
type Variant = Self ;
351
356
352
357
fn variant_seed < V > ( self , seed : V ) -> Result < ( V :: Value , Self :: Variant ) , Self :: Error >
353
358
where
354
- V : serde :: de :: DeserializeSeed < ' de > ,
359
+ V : DeserializeSeed < ' de > ,
355
360
{
356
361
let variant_index = self . decode_u32 ( ) ?;
357
362
358
- let deserializer =
359
- serde:: de:: IntoDeserializer :: < Self :: Error > :: into_deserializer ( variant_index) ;
363
+ let deserializer = IntoDeserializer :: < Self :: Error > :: into_deserializer ( variant_index) ;
360
364
361
365
let value = seed. deserialize ( deserializer) ?;
362
366
363
367
Ok ( ( value, self ) )
364
368
}
365
369
}
366
370
367
- impl < ' de > serde :: de :: VariantAccess < ' de > for & mut Decoder < ' de > {
371
+ impl < ' de > VariantAccess < ' de > for & mut Decoder < ' de > {
368
372
type Error = Box < Error > ;
369
373
370
374
fn unit_variant ( self ) -> Result < ( ) , Self :: Error > {
@@ -373,16 +377,16 @@ impl<'de> serde::de::VariantAccess<'de> for &mut Decoder<'de> {
373
377
374
378
fn newtype_variant_seed < T > ( self , seed : T ) -> Result < T :: Value , Self :: Error >
375
379
where
376
- T : serde :: de :: DeserializeSeed < ' de > ,
380
+ T : DeserializeSeed < ' de > ,
377
381
{
378
382
seed. deserialize ( self )
379
383
}
380
384
381
385
fn tuple_variant < V > ( self , len : usize , visitor : V ) -> Result < V :: Value , Self :: Error >
382
386
where
383
- V : serde :: de :: Visitor < ' de > ,
387
+ V : Visitor < ' de > ,
384
388
{
385
- serde :: de :: Deserializer :: deserialize_tuple ( self , len, visitor)
389
+ Deserializer :: deserialize_tuple ( self , len, visitor)
386
390
}
387
391
388
392
fn struct_variant < V > (
@@ -391,8 +395,8 @@ impl<'de> serde::de::VariantAccess<'de> for &mut Decoder<'de> {
391
395
visitor : V ,
392
396
) -> Result < V :: Value , Self :: Error >
393
397
where
394
- V : serde :: de :: Visitor < ' de > ,
398
+ V : Visitor < ' de > ,
395
399
{
396
- serde :: de :: Deserializer :: deserialize_tuple ( self , fields. len ( ) , visitor)
400
+ Deserializer :: deserialize_tuple ( self , fields. len ( ) , visitor)
397
401
}
398
402
}
0 commit comments