@@ -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