@@ -15,10 +15,10 @@ impl<'de> Decoder<'de> {
15
15
16
16
macro_rules! impl_decode {
17
17
( $method: ident( $ty: ty) ) => {
18
- fn $method( & mut self ) -> Result <$ty, Error > {
18
+ fn $method( & mut self ) -> Result <$ty, Box < Error > > {
19
19
let ( bytes, rest) = self . buf. split_at_checked( size_of:: <$ty>( ) ) . ok_or_else( || {
20
20
cold( ) ;
21
- Error :: MissingData
21
+ Box :: new ( Error :: MissingData )
22
22
} ) ?;
23
23
self . buf = rest;
24
24
@@ -45,12 +45,12 @@ impl Decoder<'_> {
45
45
impl_decode ! ( decode_f32( f32 ) ) ;
46
46
impl_decode ! ( decode_f64( f64 ) ) ;
47
47
48
- fn decode_bytes ( & mut self ) -> Result < & [ u8 ] , Error > {
48
+ fn decode_bytes ( & mut self ) -> Result < & [ u8 ] , Box < Error > > {
49
49
let len = self . decode_u32 ( ) ?;
50
50
51
51
let ( bytes, rest) = self . buf . split_at_checked ( len as usize ) . ok_or_else ( || {
52
52
cold ( ) ;
53
- Error :: MissingData
53
+ Box :: new ( Error :: MissingData )
54
54
} ) ?;
55
55
self . buf = rest;
56
56
@@ -72,27 +72,30 @@ macro_rules! impl_deserialize {
72
72
}
73
73
74
74
impl < ' de > serde:: de:: Deserializer < ' de > for & mut Decoder < ' de > {
75
- type Error = Error ;
75
+ type Error = Box < Error > ;
76
76
77
77
fn deserialize_any < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
78
78
where
79
79
V : serde:: de:: Visitor < ' de > ,
80
80
{
81
- Err ( Error :: NotSupported )
81
+ cold ( ) ;
82
+ Err ( Box :: new ( Error :: NotSupported ) )
82
83
}
83
84
84
85
fn deserialize_ignored_any < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
85
86
where
86
87
V : serde:: de:: Visitor < ' de > ,
87
88
{
88
- Err ( Error :: NotSupported )
89
+ cold ( ) ;
90
+ Err ( Box :: new ( Error :: NotSupported ) )
89
91
}
90
92
91
93
fn deserialize_identifier < V > ( self , _visitor : V ) -> Result < V :: Value , Self :: Error >
92
94
where
93
95
V : serde:: de:: Visitor < ' de > ,
94
96
{
95
- Err ( Error :: NotSupported )
97
+ cold ( ) ;
98
+ Err ( Box :: new ( Error :: NotSupported ) )
96
99
}
97
100
98
101
impl_deserialize ! ( deserialize_i8( i8 ) : decode_i8 => visit_i8) ;
@@ -119,7 +122,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
119
122
1 => visitor. visit_bool ( true ) ,
120
123
_ => {
121
124
cold ( ) ;
122
- Err ( Error :: InvalidBool )
125
+ Err ( Box :: new ( Error :: InvalidBool ) )
123
126
}
124
127
}
125
128
}
@@ -132,7 +135,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
132
135
133
136
let value = char:: from_u32 ( bits) . ok_or_else ( || {
134
137
cold ( ) ;
135
- Error :: InvalidChar
138
+ Box :: new ( Error :: InvalidChar )
136
139
} ) ?;
137
140
138
141
visitor. visit_char ( value)
@@ -178,7 +181,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
178
181
179
182
let value = from_utf8 ( bytes) . map_err ( |_err| {
180
183
cold ( ) ;
181
- Error :: InvalidStr
184
+ Box :: new ( Error :: InvalidStr )
182
185
} ) ?;
183
186
184
187
visitor. visit_string ( value. to_owned ( ) )
@@ -222,7 +225,7 @@ impl<'de> serde::de::Deserializer<'de> for &mut Decoder<'de> {
222
225
1 => visitor. visit_some ( self ) ,
223
226
_ => {
224
227
cold ( ) ;
225
- Err ( Error :: InvalidOption )
228
+ Err ( Box :: new ( Error :: InvalidOption ) )
226
229
}
227
230
}
228
231
}
@@ -302,7 +305,7 @@ struct LimitedDecoder<'a, 'de> {
302
305
}
303
306
304
307
impl < ' de > serde:: de:: SeqAccess < ' de > for LimitedDecoder < ' _ , ' de > {
305
- type Error = Error ;
308
+ type Error = Box < Error > ;
306
309
307
310
fn next_element_seed < T > ( & mut self , seed : T ) -> Result < Option < T :: Value > , Self :: Error >
308
311
where
@@ -326,7 +329,7 @@ impl<'de> serde::de::SeqAccess<'de> for LimitedDecoder<'_, 'de> {
326
329
}
327
330
328
331
impl < ' de > serde:: de:: MapAccess < ' de > for LimitedDecoder < ' _ , ' de > {
329
- type Error = Error ;
332
+ type Error = Box < Error > ;
330
333
331
334
fn next_key_seed < T > ( & mut self , seed : T ) -> Result < Option < T :: Value > , Self :: Error >
332
335
where
@@ -357,7 +360,7 @@ impl<'de> serde::de::MapAccess<'de> for LimitedDecoder<'_, 'de> {
357
360
}
358
361
359
362
impl < ' de > serde:: de:: EnumAccess < ' de > for & mut Decoder < ' de > {
360
- type Error = Error ;
363
+ type Error = Box < Error > ;
361
364
type Variant = Self ;
362
365
363
366
fn variant_seed < V > ( self , seed : V ) -> Result < ( V :: Value , Self :: Variant ) , Self :: Error >
@@ -366,7 +369,8 @@ impl<'de> serde::de::EnumAccess<'de> for &mut Decoder<'de> {
366
369
{
367
370
let variant_index = self . decode_u32 ( ) ?;
368
371
369
- let deserializer = serde:: de:: IntoDeserializer :: into_deserializer ( variant_index) ;
372
+ let deserializer =
373
+ serde:: de:: IntoDeserializer :: < Self :: Error > :: into_deserializer ( variant_index) ;
370
374
371
375
let value = seed. deserialize ( deserializer) ?;
372
376
@@ -375,7 +379,7 @@ impl<'de> serde::de::EnumAccess<'de> for &mut Decoder<'de> {
375
379
}
376
380
377
381
impl < ' de > serde:: de:: VariantAccess < ' de > for & mut Decoder < ' de > {
378
- type Error = Error ;
382
+ type Error = Box < Error > ;
379
383
380
384
fn unit_variant ( self ) -> Result < ( ) , Self :: Error > {
381
385
Ok ( ( ) )
0 commit comments