@@ -1241,6 +1241,36 @@ macro_rules! create_bool_or_string_de {
12411241create_bool_or_string_de ! ( true_or_always<true , "always" >) ;
12421242create_bool_or_string_de ! ( false_or_never<false , "never" >) ;
12431243
1244+ macro_rules! named_unit_variant {
1245+ ( $variant: ident) => {
1246+ pub ( super ) 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+
12441274#[ derive( Deserialize , Debug , Clone , Copy ) ]
12451275#[ serde( rename_all = "snake_case" ) ]
12461276enum SnippetScopeDef {
@@ -1332,21 +1362,21 @@ enum CallableCompletionDef {
13321362}
13331363
13341364#[ derive( Deserialize , Debug , Clone ) ]
1335- #[ serde( rename_all = "snake_case" ) ]
13361365#[ serde( untagged) ]
13371366enum CargoFeatures {
1367+ #[ serde( deserialize_with = "de_unit_v::all" ) ]
13381368 All ,
13391369 Listed ( Vec < String > ) ,
13401370}
13411371
13421372#[ derive( Deserialize , Debug , Clone ) ]
1343- #[ serde( rename_all = "snake_case" ) ]
13441373#[ serde( untagged) ]
13451374enum LifetimeElisionDef {
13461375 #[ serde( deserialize_with = "true_or_always" ) ]
13471376 Always ,
13481377 #[ serde( deserialize_with = "false_or_never" ) ]
13491378 Never ,
1379+ #[ serde( deserialize_with = "de_unit_v::skip_trivial" ) ]
13501380 SkipTrivial ,
13511381}
13521382
0 commit comments