@@ -423,7 +423,6 @@ where
423
423
s => match self . de . config . resolver . resolve ( s) {
424
424
Some ( id) => visitor. visit_borrowed_str ( id) ,
425
425
None => match self . de . config . failed_resolve_strategy {
426
- FailedResolveStrategy :: Visit => visitor. visit_u16 ( s) ,
427
426
FailedResolveStrategy :: Error => Err ( Error :: from ( DeserializeError {
428
427
kind : DeserializeErrorKind :: UnknownToken { token_id : s } ,
429
428
} ) ) ,
@@ -457,7 +456,6 @@ impl<'a, 'de: 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::Deserializ
457
456
deserialize_scalar ! ( deserialize_i8) ;
458
457
deserialize_scalar ! ( deserialize_i16) ;
459
458
deserialize_scalar ! ( deserialize_u8) ;
460
- deserialize_scalar ! ( deserialize_u16) ;
461
459
deserialize_scalar ! ( deserialize_char) ;
462
460
deserialize_scalar ! ( deserialize_identifier) ;
463
461
deserialize_scalar ! ( deserialize_bytes) ;
@@ -474,6 +472,17 @@ impl<'a, 'de: 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::Deserializ
474
472
}
475
473
}
476
474
475
+ fn deserialize_u16 < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
476
+ where
477
+ V : Visitor < ' de > ,
478
+ {
479
+ match self . token {
480
+ QUOTED_STRING | UNQUOTED_STRING | U32 | I32 | U64 | I64 | BOOL | F32 | F64 | OPEN
481
+ | END | EQUAL => self . deser ( visitor) ,
482
+ x => visitor. visit_u16 ( x) ,
483
+ }
484
+ }
485
+
477
486
fn deserialize_i32 < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
478
487
where
479
488
V : Visitor < ' de > ,
@@ -1143,7 +1152,6 @@ fn visit_key<'b, 'de: 'b, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, V: Vis
1143
1152
BinaryToken :: Token ( s) => match config. resolver . resolve ( s) {
1144
1153
Some ( id) => visitor. visit_borrowed_str ( id) ,
1145
1154
None => match config. failed_resolve_strategy {
1146
- FailedResolveStrategy :: Visit => visitor. visit_u16 ( s) ,
1147
1155
FailedResolveStrategy :: Error => Err ( Error :: from ( DeserializeError {
1148
1156
kind : DeserializeErrorKind :: UnknownToken { token_id : s } ,
1149
1157
} ) ) ,
@@ -1161,6 +1169,17 @@ impl<'b, 'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'
1161
1169
{
1162
1170
type Error = Error ;
1163
1171
1172
+ fn deserialize_u16 < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
1173
+ where
1174
+ V : Visitor < ' de > ,
1175
+ {
1176
+ if let BinaryToken :: Token ( x) = self . tokens [ self . tape_idx ] {
1177
+ visitor. visit_u16 ( x)
1178
+ } else {
1179
+ visit_key ( self . tape_idx , self . tokens , self . config , visitor)
1180
+ }
1181
+ }
1182
+
1164
1183
fn deserialize_any < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
1165
1184
where
1166
1185
V : Visitor < ' de > ,
@@ -1169,7 +1188,7 @@ impl<'b, 'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'
1169
1188
}
1170
1189
1171
1190
serde:: forward_to_deserialize_any! {
1172
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1191
+ bool i8 i16 i32 i64 i128 u8 u32 u64 u128 f32 f64 char str string
1173
1192
bytes byte_buf option unit unit_struct newtype_struct seq tuple
1174
1193
tuple_struct map enum ignored_any identifier struct
1175
1194
}
@@ -1830,23 +1849,9 @@ mod tests {
1830
1849
}
1831
1850
}
1832
1851
1833
- let mut builder = eu4_builder ( ) ;
1834
- builder. on_failed_resolve ( FailedResolveStrategy :: Visit ) ;
1835
- let result: MyStruct = builder
1836
- . from_slice ( & data[ ..] , & NullResolver )
1837
- . unwrap ( )
1838
- . deserialize ( )
1839
- . unwrap ( ) ;
1840
-
1841
- let mut on_builder = OndemandBinaryDeserializerBuilder :: with_flavor ( Eu4Flavor :: new ( ) ) ;
1842
- on_builder. on_failed_resolve ( FailedResolveStrategy :: Visit ) ;
1843
- let ondemand = on_builder
1844
- . deserialize_slice ( & data[ ..] , & NullResolver )
1845
- . unwrap ( ) ;
1846
-
1847
- assert_eq ! ( result, ondemand) ;
1852
+ let actual: MyStruct = from_slice ( & data[ ..] , & NullResolver ) . unwrap ( ) ;
1848
1853
assert_eq ! (
1849
- result ,
1854
+ actual ,
1850
1855
MyStruct {
1851
1856
field1: String :: from( "ENG" ) ,
1852
1857
}
0 commit comments