@@ -1854,7 +1854,7 @@ impl Config {
1854
1854
macro_rules! create_bool_or_string_serde {
1855
1855
( $ident: ident<$bool: literal, $string: literal>) => {
1856
1856
mod $ident {
1857
- pub fn deserialize<' de, D >( d: D ) -> Result <( ) , D :: Error >
1857
+ pub ( super ) fn deserialize<' de, D >( d: D ) -> Result <( ) , D :: Error >
1858
1858
where
1859
1859
D : serde:: Deserializer <' de>,
1860
1860
{
@@ -1919,7 +1919,7 @@ macro_rules! create_bool_or_string_serde {
1919
1919
d. deserialize_any( V )
1920
1920
}
1921
1921
1922
- pub fn serialize<S >( serializer: S ) -> Result <S :: Ok , S :: Error >
1922
+ pub ( super ) fn serialize<S >( serializer: S ) -> Result <S :: Ok , S :: Error >
1923
1923
where
1924
1924
S : serde:: Serializer ,
1925
1925
{
@@ -1933,25 +1933,33 @@ create_bool_or_string_serde!(false_or_never<false, "never">);
1933
1933
1934
1934
macro_rules! named_unit_variant {
1935
1935
( $variant: ident) => {
1936
- pub ( super ) fn $variant<' de, D >( deserializer: D ) -> Result <( ) , D :: Error >
1937
- where
1938
- D : serde:: Deserializer <' de>,
1939
- {
1940
- struct V ;
1941
- impl <' de> serde:: de:: Visitor <' de> for V {
1942
- type Value = ( ) ;
1943
- fn expecting( & self , f: & mut std:: fmt:: Formatter <' _>) -> std:: fmt:: Result {
1944
- f. write_str( concat!( "\" " , stringify!( $variant) , "\" " ) )
1945
- }
1946
- fn visit_str<E : serde:: de:: Error >( self , value: & str ) -> Result <Self :: Value , E > {
1947
- if value == stringify!( $variant) {
1948
- Ok ( ( ) )
1949
- } else {
1950
- Err ( E :: invalid_value( serde:: de:: Unexpected :: Str ( value) , & self ) )
1936
+ pub ( super ) mod $variant {
1937
+ pub ( in super :: super ) fn deserialize<' de, D >( deserializer: D ) -> Result <( ) , D :: Error >
1938
+ where
1939
+ D : serde:: Deserializer <' de>,
1940
+ {
1941
+ struct V ;
1942
+ impl <' de> serde:: de:: Visitor <' de> for V {
1943
+ type Value = ( ) ;
1944
+ fn expecting( & self , f: & mut std:: fmt:: Formatter <' _>) -> std:: fmt:: Result {
1945
+ f. write_str( concat!( "\" " , stringify!( $variant) , "\" " ) )
1946
+ }
1947
+ fn visit_str<E : serde:: de:: Error >( self , value: & str ) -> Result <Self :: Value , E > {
1948
+ if value == stringify!( $variant) {
1949
+ Ok ( ( ) )
1950
+ } else {
1951
+ Err ( E :: invalid_value( serde:: de:: Unexpected :: Str ( value) , & self ) )
1952
+ }
1951
1953
}
1952
1954
}
1955
+ deserializer. deserialize_str( V )
1956
+ }
1957
+ pub ( in super :: super ) fn serialize<S >( serializer: S ) -> Result <S :: Ok , S :: Error >
1958
+ where
1959
+ S : serde:: Serializer ,
1960
+ {
1961
+ serializer. serialize_str( stringify!( $variant) )
1953
1962
}
1954
- deserializer. deserialize_str( V )
1955
1963
}
1956
1964
} ;
1957
1965
}
@@ -2136,7 +2144,7 @@ enum CallableCompletionDef {
2136
2144
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2137
2145
#[ serde( untagged) ]
2138
2146
enum CargoFeaturesDef {
2139
- #[ serde( deserialize_with = "de_unit_v::all" ) ]
2147
+ #[ serde( with = "de_unit_v::all" ) ]
2140
2148
All ,
2141
2149
Selected ( Vec < String > ) ,
2142
2150
}
@@ -2165,7 +2173,7 @@ enum LifetimeElisionDef {
2165
2173
Always ,
2166
2174
#[ serde( with = "false_or_never" ) ]
2167
2175
Never ,
2168
- #[ serde( deserialize_with = "de_unit_v::skip_trivial" ) ]
2176
+ #[ serde( with = "de_unit_v::skip_trivial" ) ]
2169
2177
SkipTrivial ,
2170
2178
}
2171
2179
@@ -2176,7 +2184,7 @@ enum ClosureReturnTypeHintsDef {
2176
2184
Always ,
2177
2185
#[ serde( with = "false_or_never" ) ]
2178
2186
Never ,
2179
- #[ serde( deserialize_with = "de_unit_v::with_block" ) ]
2187
+ #[ serde( with = "de_unit_v::with_block" ) ]
2180
2188
WithBlock ,
2181
2189
}
2182
2190
@@ -2196,7 +2204,7 @@ enum ReborrowHintsDef {
2196
2204
Always ,
2197
2205
#[ serde( with = "false_or_never" ) ]
2198
2206
Never ,
2199
- #[ serde( deserialize_with = "de_unit_v::mutable" ) ]
2207
+ #[ serde( with = "de_unit_v::mutable" ) ]
2200
2208
Mutable ,
2201
2209
}
2202
2210
@@ -2207,7 +2215,7 @@ enum AdjustmentHintsDef {
2207
2215
Always ,
2208
2216
#[ serde( with = "false_or_never" ) ]
2209
2217
Never ,
2210
- #[ serde( deserialize_with = "de_unit_v::reborrow" ) ]
2218
+ #[ serde( with = "de_unit_v::reborrow" ) ]
2211
2219
Reborrow ,
2212
2220
}
2213
2221
@@ -2218,7 +2226,7 @@ enum DiscriminantHintsDef {
2218
2226
Always ,
2219
2227
#[ serde( with = "false_or_never" ) ]
2220
2228
Never ,
2221
- #[ serde( deserialize_with = "de_unit_v::fieldless" ) ]
2229
+ #[ serde( with = "de_unit_v::fieldless" ) ]
2222
2230
Fieldless ,
2223
2231
}
2224
2232
@@ -2270,18 +2278,29 @@ enum WorkspaceSymbolSearchKindDef {
2270
2278
AllSymbols ,
2271
2279
}
2272
2280
2273
- #[ derive( Serialize , Deserialize , Debug , Copy , Clone ) ]
2281
+ #[ derive( Serialize , Deserialize , Debug , Copy , Clone , PartialEq ) ]
2274
2282
#[ serde( rename_all = "snake_case" ) ]
2275
2283
#[ serde( untagged) ]
2276
- pub enum MemoryLayoutHoverRenderKindDef {
2277
- #[ serde( deserialize_with = "de_unit_v::decimal" ) ]
2284
+ enum MemoryLayoutHoverRenderKindDef {
2285
+ #[ serde( with = "de_unit_v::decimal" ) ]
2278
2286
Decimal ,
2279
- #[ serde( deserialize_with = "de_unit_v::hexadecimal" ) ]
2287
+ #[ serde( with = "de_unit_v::hexadecimal" ) ]
2280
2288
Hexadecimal ,
2281
- #[ serde( deserialize_with = "de_unit_v::both" ) ]
2289
+ #[ serde( with = "de_unit_v::both" ) ]
2282
2290
Both ,
2283
2291
}
2284
2292
2293
+ #[ test]
2294
+ fn untagged_option_hover_render_kind ( ) {
2295
+ let hex = MemoryLayoutHoverRenderKindDef :: Hexadecimal ;
2296
+
2297
+ let ser = serde_json:: to_string ( & Some ( hex) ) . unwrap ( ) ;
2298
+ assert_eq ! ( & ser, "\" hexadecimal\" " ) ;
2299
+
2300
+ let opt: Option < _ > = serde_json:: from_str ( "\" hexadecimal\" " ) . unwrap ( ) ;
2301
+ assert_eq ! ( opt, Some ( hex) ) ;
2302
+ }
2303
+
2285
2304
#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq ) ]
2286
2305
#[ serde( rename_all = "snake_case" ) ]
2287
2306
#[ serde( untagged) ]
0 commit comments