@@ -113,7 +113,7 @@ pub enum Pattern {
113113} 
114114
115115/// Represents a constant in the type system 
116- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
116+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
117117pub  struct  TyConst  { 
118118    pub ( crate )  kind :  TyConstKind , 
119119    pub  id :  TyConstId , 
@@ -140,7 +140,7 @@ impl TyConst {
140140    } 
141141} 
142142
143- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
143+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
144144pub  enum  TyConstKind  { 
145145    Param ( ParamConst ) , 
146146    Bound ( DebruijnIndex ,  BoundVar ) , 
@@ -151,11 +151,11 @@ pub enum TyConstKind {
151151    ZSTValue ( Ty ) , 
152152} 
153153
154- #[ derive( Copy ,  Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
154+ #[ derive( Copy ,  Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
155155pub  struct  TyConstId ( usize ) ; 
156156
157157/// Represents a constant in MIR 
158- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
158+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
159159pub  struct  MirConst  { 
160160    /// The constant kind. 
161161     pub ( crate )  kind :  ConstantKind , 
@@ -212,17 +212,17 @@ impl MirConst {
212212    } 
213213} 
214214
215- #[ derive( Clone ,  Copy ,  Debug ,  PartialEq ,  Eq ,  Serialize ) ]  
215+ #[ derive( Clone ,  Copy ,  Debug ,  PartialEq ,  Eq ,  Hash ,   Serialize ) ]  
216216pub  struct  MirConstId ( usize ) ; 
217217
218218type  Ident  = Opaque ; 
219219
220- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
220+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
221221pub  struct  Region  { 
222222    pub  kind :  RegionKind , 
223223} 
224224
225- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
225+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
226226pub  enum  RegionKind  { 
227227    ReEarlyParam ( EarlyParamRegion ) , 
228228    ReBound ( DebruijnIndex ,  BoundRegion ) , 
@@ -233,29 +233,29 @@ pub enum RegionKind {
233233
234234pub ( crate )  type  DebruijnIndex  = u32 ; 
235235
236- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
236+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
237237pub  struct  EarlyParamRegion  { 
238238    pub  index :  u32 , 
239239    pub  name :  Symbol , 
240240} 
241241
242242pub ( crate )  type  BoundVar  = u32 ; 
243243
244- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
244+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
245245pub  struct  BoundRegion  { 
246246    pub  var :  BoundVar , 
247247    pub  kind :  BoundRegionKind , 
248248} 
249249
250250pub ( crate )  type  UniverseIndex  = u32 ; 
251251
252- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
252+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
253253pub  struct  Placeholder < T >  { 
254254    pub  universe :  UniverseIndex , 
255255    pub  bound :  T , 
256256} 
257257
258- #[ derive( Clone ,  Copy ,  PartialEq ,  Eq ,  Serialize ) ]  
258+ #[ derive( Clone ,  Copy ,  PartialEq ,  Eq ,  Hash ,   Serialize ) ]  
259259pub  struct  Span ( usize ) ; 
260260
261261impl  Debug  for  Span  { 
@@ -997,7 +997,7 @@ crate_def! {
997997} 
998998
999999/// A list of generic arguments. 
1000- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1000+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
10011001pub  struct  GenericArgs ( pub  Vec < GenericArgKind > ) ; 
10021002
10031003impl  std:: ops:: Index < ParamTy >  for  GenericArgs  { 
@@ -1016,7 +1016,7 @@ impl std::ops::Index<ParamConst> for GenericArgs {
10161016    } 
10171017} 
10181018
1019- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1019+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
10201020pub  enum  GenericArgKind  { 
10211021    Lifetime ( Region ) , 
10221022    Type ( Ty ) , 
@@ -1199,7 +1199,7 @@ pub enum BoundTyKind {
11991199    Param ( ParamDef ,  String ) , 
12001200} 
12011201
1202- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1202+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
12031203pub  enum  BoundRegionKind  { 
12041204    BrAnon , 
12051205    BrNamed ( BrNamedDef ,  String ) , 
@@ -1354,7 +1354,7 @@ impl Allocation {
13541354    } 
13551355} 
13561356
1357- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1357+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
13581358pub  enum  ConstantKind  { 
13591359    Ty ( TyConst ) , 
13601360    Allocated ( Allocation ) , 
@@ -1365,13 +1365,13 @@ pub enum ConstantKind {
13651365     ZeroSized , 
13661366} 
13671367
1368- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1368+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
13691369pub  struct  ParamConst  { 
13701370    pub  index :  u32 , 
13711371    pub  name :  String , 
13721372} 
13731373
1374- #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Serialize ) ]  
1374+ #[ derive( Clone ,  Debug ,  Eq ,  PartialEq ,  Hash ,   Serialize ) ]  
13751375pub  struct  UnevaluatedConst  { 
13761376    pub  def :  ConstDef , 
13771377    pub  args :  GenericArgs , 
0 commit comments