@@ -535,64 +535,63 @@ impl<'a> From<&'a (EnumeratedValues, Option<EnumPath>)> for EV<'a> {
535535
536536#[ derive( Clone , Copy , Debug ) ]
537537pub 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 > ) ,
547542}
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+
548556impl < ' a > RWEnum < ' a > {
549557 pub fn different_enums ( & self ) -> bool {
550- matches ! ( self , Self :: ReadEnumWriteEnum ( _ , _ ) )
558+ matches ! ( self , Self :: ReadWrite ( ReadEnum :: Enum ( _ ) , WriteEnum :: Enum ( _ ) ) )
551559 }
552560 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 ( _, _) )
561562 }
562563 pub fn read_only ( & self ) -> bool {
563- matches ! ( self , Self :: ReadEnum ( _) | Self :: ReadRaw )
564+ matches ! ( self , Self :: Read ( _) )
564565 }
565566 pub fn can_read ( & self ) -> bool {
566567 self . read_write ( ) || self . read_only ( )
567568 }
568569 pub fn write_only ( & self ) -> bool {
569- matches ! ( self , Self :: WriteEnum ( _) | Self :: WriteRaw )
570+ matches ! ( self , Self :: Write ( _) )
570571 }
571572 pub fn can_write ( & self ) -> bool {
572573 self . read_write ( ) || self . write_only ( )
573574 }
574575 pub fn read_enum ( & self ) -> Option < EV < ' a > > {
575576 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) ,
580580 _ => None ,
581581 }
582582 }
583583 pub fn write_enum ( & self ) -> Option < EV < ' a > > {
584584 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) ,
589588 _ => None ,
590589 }
591590 }
592591 pub fn generate_write_enum ( & self ) -> bool {
593592 matches ! (
594593 self ,
595- Self :: ReadEnumWriteEnum ( _, _ ) | Self :: ReadRawWriteEnum ( _) | Self :: WriteEnum ( _ )
594+ Self :: ReadWrite ( _, WriteEnum :: Enum ( _) ) | Self :: Write ( WriteEnum :: Enum ( _ ) )
596595 )
597596 }
598597}
@@ -705,15 +704,21 @@ pub fn fields(
705704 can_write,
706705 lookup_filter ( & lookup_results, Usage :: Write ) ,
707706 ) {
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 ) ,
717722 ( false , _, false , _) => {
718723 return Err ( anyhow ! ( "Field {fpath} is not writtable or readable" ) )
719724 }
0 commit comments