1- use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ; //, StableOrd};
2- use crate :: HashStableContext ;
31use crate :: expand:: typetree:: TypeTree ;
42use thin_vec:: ThinVec ;
53use std:: str:: FromStr ;
64
75use crate :: NestedMetaItem ;
86
97#[ allow( dead_code) ]
10- #[ derive( Clone , Copy , Eq , PartialEq , Encodable , Decodable , Debug ) ]
8+ #[ derive( Clone , Copy , Eq , PartialEq , Encodable , Decodable , Debug , HashStable_Generic ) ]
119pub enum DiffMode {
1210 Inactive ,
1311 Source ,
@@ -16,44 +14,16 @@ pub enum DiffMode {
1614}
1715
1816#[ allow( dead_code) ]
19- #[ derive( Clone , Copy , Eq , PartialEq , Encodable , Decodable , Debug ) ]
17+ #[ derive( Clone , Copy , Eq , PartialEq , Encodable , Decodable , Debug , HashStable_Generic ) ]
2018pub enum DiffActivity {
2119 None ,
2220 Active ,
2321 Const ,
22+ Dual ,
23+ DualNoNeed ,
2424 Duplicated ,
2525 DuplicatedNoNeed ,
2626}
27- fn clause_diffactivity_discriminant ( value : & DiffActivity ) -> usize {
28- match value {
29- DiffActivity :: None => 0 ,
30- DiffActivity :: Active => 1 ,
31- DiffActivity :: Const => 2 ,
32- DiffActivity :: Duplicated => 3 ,
33- DiffActivity :: DuplicatedNoNeed => 4 ,
34- }
35- }
36- fn clause_diffmode_discriminant ( value : & DiffMode ) -> usize {
37- match value {
38- DiffMode :: Inactive => 0 ,
39- DiffMode :: Source => 1 ,
40- DiffMode :: Forward => 2 ,
41- DiffMode :: Reverse => 3 ,
42- }
43- }
44-
45-
46- impl < CTX : HashStableContext > HashStable < CTX > for DiffMode {
47- fn hash_stable ( & self , hcx : & mut CTX , hasher : & mut StableHasher ) {
48- clause_diffmode_discriminant ( self ) . hash_stable ( hcx, hasher) ;
49- }
50- }
51-
52- impl < CTX : HashStableContext > HashStable < CTX > for DiffActivity {
53- fn hash_stable ( & self , hcx : & mut CTX , hasher : & mut StableHasher ) {
54- clause_diffactivity_discriminant ( self ) . hash_stable ( hcx, hasher) ;
55- }
56- }
5727
5828impl FromStr for DiffMode {
5929 type Err = ( ) ;
@@ -74,6 +44,8 @@ impl FromStr for DiffActivity {
7444 "None" => Ok ( DiffActivity :: None ) ,
7545 "Active" => Ok ( DiffActivity :: Active ) ,
7646 "Const" => Ok ( DiffActivity :: Const ) ,
47+ "Dual" => Ok ( DiffActivity :: Dual ) ,
48+ "DualNoNeed" => Ok ( DiffActivity :: DualNoNeed ) ,
7749 "Duplicated" => Ok ( DiffActivity :: Duplicated ) ,
7850 "DuplicatedNoNeed" => Ok ( DiffActivity :: DuplicatedNoNeed ) ,
7951 _ => Err ( ( ) ) ,
0 commit comments