@@ -535,64 +535,63 @@ impl<'a> From<&'a (EnumeratedValues, Option<EnumPath>)> for EV<'a> {
535
535
536
536
#[ derive( Clone , Copy , Debug ) ]
537
537
pub enum RWEnum < ' a > {
538
- ReadAndWriteEnum ( EV < ' a > ) ,
539
- ReadEnumWriteEnum ( EV < ' a > , EV < ' a > ) ,
540
- ReadEnumWriteRaw ( EV < ' a > ) ,
541
- ReadRawWriteEnum ( EV < ' a > ) ,
542
- ReadEnum ( EV < ' a > ) ,
543
- ReadRaw ,
544
- WriteEnum ( EV < ' a > ) ,
545
- WriteRaw ,
546
- ReadRawWriteRaw ,
538
+ ReadWriteCommon ( EV < ' a > ) ,
539
+ ReadWrite ( ReadEnum < ' a > , WriteEnum < ' a > ) ,
540
+ Read ( ReadEnum < ' a > ) ,
541
+ Write ( WriteEnum < ' a > ) ,
547
542
}
543
+
544
+ #[ derive( Clone , Copy , Debug ) ]
545
+ pub enum ReadEnum < ' a > {
546
+ Enum ( EV < ' a > ) ,
547
+ Raw ,
548
+ }
549
+
550
+ #[ derive( Clone , Copy , Debug ) ]
551
+ pub enum WriteEnum < ' a > {
552
+ Enum ( EV < ' a > ) ,
553
+ Raw ,
554
+ }
555
+
548
556
impl < ' a > RWEnum < ' a > {
549
557
pub fn different_enums ( & self ) -> bool {
550
- matches ! ( self , Self :: ReadEnumWriteEnum ( _ , _ ) )
558
+ matches ! ( self , Self :: ReadWrite ( ReadEnum :: Enum ( _ ) , WriteEnum :: Enum ( _ ) ) )
551
559
}
552
560
pub fn read_write ( & self ) -> bool {
553
- matches ! (
554
- self ,
555
- Self :: ReadAndWriteEnum ( _)
556
- | Self :: ReadEnumWriteEnum ( _, _)
557
- | Self :: ReadEnumWriteRaw ( _)
558
- | Self :: ReadRawWriteEnum ( _)
559
- | Self :: ReadRawWriteRaw
560
- )
561
+ matches ! ( self , Self :: ReadWriteCommon ( _) | Self :: ReadWrite ( _, _) )
561
562
}
562
563
pub fn read_only ( & self ) -> bool {
563
- matches ! ( self , Self :: ReadEnum ( _) | Self :: ReadRaw )
564
+ matches ! ( self , Self :: Read ( _) )
564
565
}
565
566
pub fn can_read ( & self ) -> bool {
566
567
self . read_write ( ) || self . read_only ( )
567
568
}
568
569
pub fn write_only ( & self ) -> bool {
569
- matches ! ( self , Self :: WriteEnum ( _) | Self :: WriteRaw )
570
+ matches ! ( self , Self :: Write ( _) )
570
571
}
571
572
pub fn can_write ( & self ) -> bool {
572
573
self . read_write ( ) || self . write_only ( )
573
574
}
574
575
pub fn read_enum ( & self ) -> Option < EV < ' a > > {
575
576
match self {
576
- Self :: ReadAndWriteEnum ( e)
577
- | Self :: ReadEnumWriteEnum ( e, _)
578
- | Self :: ReadEnumWriteRaw ( e)
579
- | Self :: ReadEnum ( e) => Some ( * e) ,
577
+ Self :: ReadWriteCommon ( e)
578
+ | Self :: ReadWrite ( ReadEnum :: Enum ( e) , _)
579
+ | Self :: Read ( ReadEnum :: Enum ( e) ) => Some ( * e) ,
580
580
_ => None ,
581
581
}
582
582
}
583
583
pub fn write_enum ( & self ) -> Option < EV < ' a > > {
584
584
match self {
585
- Self :: ReadAndWriteEnum ( e)
586
- | Self :: ReadEnumWriteEnum ( _, e)
587
- | Self :: ReadRawWriteEnum ( e)
588
- | Self :: WriteEnum ( e) => Some ( * e) ,
585
+ Self :: ReadWriteCommon ( e)
586
+ | Self :: ReadWrite ( _, WriteEnum :: Enum ( e) )
587
+ | Self :: Write ( WriteEnum :: Enum ( e) ) => Some ( * e) ,
589
588
_ => None ,
590
589
}
591
590
}
592
591
pub fn generate_write_enum ( & self ) -> bool {
593
592
matches ! (
594
593
self ,
595
- Self :: ReadEnumWriteEnum ( _, _ ) | Self :: ReadRawWriteEnum ( _) | Self :: WriteEnum ( _ )
594
+ Self :: ReadWrite ( _, WriteEnum :: Enum ( _) ) | Self :: Write ( WriteEnum :: Enum ( _ ) )
596
595
)
597
596
}
598
597
}
@@ -705,15 +704,21 @@ pub fn fields(
705
704
can_write,
706
705
lookup_filter ( & lookup_results, Usage :: Write ) ,
707
706
) {
708
- ( true , Some ( e1) , true , Some ( e2) ) if e1. 0 == e2. 0 => RWEnum :: ReadAndWriteEnum ( e1. into ( ) ) ,
709
- ( true , Some ( e1) , true , Some ( e2) ) => RWEnum :: ReadEnumWriteEnum ( e1. into ( ) , e2. into ( ) ) ,
710
- ( true , Some ( e) , true , None ) => RWEnum :: ReadEnumWriteRaw ( e. into ( ) ) ,
711
- ( true , None , true , Some ( e) ) => RWEnum :: ReadRawWriteEnum ( e. into ( ) ) ,
712
- ( true , Some ( e) , false , _) => RWEnum :: ReadEnum ( e. into ( ) ) ,
713
- ( true , None , false , _) => RWEnum :: ReadRaw ,
714
- ( false , _, true , Some ( e) ) => RWEnum :: WriteEnum ( e. into ( ) ) ,
715
- ( false , _, true , None ) => RWEnum :: WriteRaw ,
716
- ( true , None , true , None ) => RWEnum :: ReadRawWriteRaw ,
707
+ ( true , Some ( e1) , true , Some ( e2) ) if e1. 0 == e2. 0 => RWEnum :: ReadWriteCommon ( e1. into ( ) ) ,
708
+ ( true , Some ( e1) , true , Some ( e2) ) => {
709
+ RWEnum :: ReadWrite ( ReadEnum :: Enum ( e1. into ( ) ) , WriteEnum :: Enum ( e2. into ( ) ) )
710
+ }
711
+ ( true , Some ( e) , true , None ) => {
712
+ RWEnum :: ReadWrite ( ReadEnum :: Enum ( e. into ( ) ) , WriteEnum :: Raw )
713
+ }
714
+ ( true , None , true , Some ( e) ) => {
715
+ RWEnum :: ReadWrite ( ReadEnum :: Raw , WriteEnum :: Enum ( e. into ( ) ) )
716
+ }
717
+ ( true , Some ( e) , false , _) => RWEnum :: Read ( ReadEnum :: Enum ( e. into ( ) ) ) ,
718
+ ( true , None , false , _) => RWEnum :: Read ( ReadEnum :: Raw ) ,
719
+ ( false , _, true , Some ( e) ) => RWEnum :: Write ( WriteEnum :: Enum ( e. into ( ) ) ) ,
720
+ ( false , _, true , None ) => RWEnum :: Write ( WriteEnum :: Raw ) ,
721
+ ( true , None , true , None ) => RWEnum :: ReadWrite ( ReadEnum :: Raw , WriteEnum :: Raw ) ,
717
722
( false , _, false , _) => {
718
723
return Err ( anyhow ! ( "Field {fpath} is not writtable or readable" ) )
719
724
}
0 commit comments