@@ -389,37 +389,6 @@ macro_rules! define_config {
389
389
where
390
390
D : Deserializer <' de>,
391
391
{
392
- #[ allow( non_camel_case_types) ]
393
- enum FieldName {
394
- $( $field, ) *
395
- }
396
- struct FieldNameVisitor ;
397
- impl <' de> serde:: de:: Visitor <' de> for FieldNameVisitor {
398
- type Value = FieldName ;
399
- fn expecting( & self , f: & mut std:: fmt:: Formatter <' _>) -> std:: fmt:: Result {
400
- f. write_str( "field identifier" )
401
- }
402
-
403
- #[ inline]
404
- fn visit_str<E >( self , value: & str ) -> Result <Self :: Value , E >
405
- where
406
- E : serde:: de:: Error ,
407
- {
408
- match value {
409
- $( $field_key => Ok ( FieldName :: $field) , ) *
410
- _ => Err ( serde:: de:: Error :: unknown_field( value, FIELDS ) ) ,
411
- }
412
- }
413
- }
414
- impl <' de> Deserialize <' de> for FieldName {
415
- #[ inline]
416
- fn deserialize<D >( deserializer: D ) -> Result <Self , D :: Error >
417
- where
418
- D : Deserializer <' de>,
419
- {
420
- Deserializer :: deserialize_identifier( deserializer, FieldNameVisitor )
421
- }
422
- }
423
392
struct Field ;
424
393
impl <' de> serde:: de:: Visitor <' de> for Field {
425
394
type Value = $name;
@@ -434,15 +403,15 @@ macro_rules! define_config {
434
403
{
435
404
$( let mut $field: Option <$field_ty> = None ; ) *
436
405
while let Some ( key) =
437
- match serde:: de:: MapAccess :: next_key:: <FieldName >( & mut map) {
406
+ match serde:: de:: MapAccess :: next_key:: <String >( & mut map) {
438
407
Ok ( val) => val,
439
408
Err ( err) => {
440
409
return Err ( err) ;
441
410
}
442
411
}
443
412
{
444
- match key {
445
- $( FieldName :: $field => {
413
+ match & * key {
414
+ $( $field_key => {
446
415
if $field. is_some( ) {
447
416
return Err ( <A :: Error as serde:: de:: Error >:: duplicate_field(
448
417
$field_key,
@@ -457,6 +426,9 @@ macro_rules! define_config {
457
426
}
458
427
} ;
459
428
} ) *
429
+ key => {
430
+ return Err ( serde:: de:: Error :: unknown_field( key, FIELDS ) ) ;
431
+ }
460
432
}
461
433
}
462
434
Ok ( $name { $( $field) ,* } )
0 commit comments