@@ -1241,6 +1241,36 @@ macro_rules! create_bool_or_string_de {
1241
1241
create_bool_or_string_de ! ( true_or_always<true , "always" >) ;
1242
1242
create_bool_or_string_de ! ( false_or_never<false , "never" >) ;
1243
1243
1244
+ macro_rules! named_unit_variant {
1245
+ ( $variant: ident) => {
1246
+ pub fn $variant<' de, D >( deserializer: D ) -> Result <( ) , D :: Error >
1247
+ where
1248
+ D : serde:: Deserializer <' de>,
1249
+ {
1250
+ struct V ;
1251
+ impl <' de> serde:: de:: Visitor <' de> for V {
1252
+ type Value = ( ) ;
1253
+ fn expecting( & self , f: & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
1254
+ f. write_str( concat!( "\" " , stringify!( $variant) , "\" " ) )
1255
+ }
1256
+ fn visit_str<E : serde:: de:: Error >( self , value: & str ) -> Result <Self :: Value , E > {
1257
+ if value == stringify!( $variant) {
1258
+ Ok ( ( ) )
1259
+ } else {
1260
+ Err ( E :: invalid_value( serde:: de:: Unexpected :: Str ( value) , & self ) )
1261
+ }
1262
+ }
1263
+ }
1264
+ deserializer. deserialize_str( V )
1265
+ }
1266
+ } ;
1267
+ }
1268
+
1269
+ mod de_unit_v {
1270
+ named_unit_variant ! ( all) ;
1271
+ named_unit_variant ! ( skip_trivial) ;
1272
+ }
1273
+
1244
1274
#[ derive( Deserialize , Debug , Clone , Copy ) ]
1245
1275
#[ serde( rename_all = "snake_case" ) ]
1246
1276
enum SnippetScopeDef {
@@ -1332,21 +1362,21 @@ enum CallableCompletionDef {
1332
1362
}
1333
1363
1334
1364
#[ derive( Deserialize , Debug , Clone ) ]
1335
- #[ serde( rename_all = "snake_case" ) ]
1336
1365
#[ serde( untagged) ]
1337
1366
enum CargoFeatures {
1367
+ #[ serde( deserialize_with = "de_unit_v::all" ) ]
1338
1368
All ,
1339
1369
Listed ( Vec < String > ) ,
1340
1370
}
1341
1371
1342
1372
#[ derive( Deserialize , Debug , Clone ) ]
1343
- #[ serde( rename_all = "snake_case" ) ]
1344
1373
#[ serde( untagged) ]
1345
1374
enum LifetimeElisionDef {
1346
1375
#[ serde( deserialize_with = "true_or_always" ) ]
1347
1376
Always ,
1348
1377
#[ serde( deserialize_with = "false_or_never" ) ]
1349
1378
Never ,
1379
+ #[ serde( deserialize_with = "de_unit_v::skip_trivial" ) ]
1350
1380
SkipTrivial ,
1351
1381
}
1352
1382
0 commit comments