1
1
use std:: fmt;
2
2
use string_cache:: DefaultAtom as Atom ;
3
3
4
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
4
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
5
5
pub struct Span {
6
6
pub lo : usize ,
7
7
pub hi : usize ,
@@ -98,7 +98,7 @@ pub struct AdtRepr {
98
98
pub int : Option < Ty > ,
99
99
}
100
100
101
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
101
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
102
102
pub struct FnSig {
103
103
pub abi : FnAbi ,
104
104
pub safety : Safety ,
@@ -126,7 +126,7 @@ pub struct ClosureDefn {
126
126
pub upvars : Vec < Ty > ,
127
127
}
128
128
129
- #[ derive( Clone , Eq , PartialEq , Debug ) ]
129
+ #[ derive( Clone , Eq , PartialEq , Debug , Hash ) ]
130
130
pub struct FnAbi ( pub Atom ) ;
131
131
132
132
impl Default for FnAbi {
@@ -189,7 +189,7 @@ pub struct OpaqueTyDefn {
189
189
pub where_clauses : Vec < QuantifiedWhereClause > ,
190
190
}
191
191
192
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
192
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
193
193
pub enum VariableKind {
194
194
Ty ( Identifier ) ,
195
195
IntegerTy ( Identifier ) ,
@@ -198,42 +198,42 @@ pub enum VariableKind {
198
198
Const ( Identifier ) ,
199
199
}
200
200
201
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
201
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
202
202
pub enum GenericArg {
203
203
Ty ( Ty ) ,
204
204
Lifetime ( Lifetime ) ,
205
205
Id ( Identifier ) ,
206
206
Const ( Const ) ,
207
207
}
208
208
209
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
209
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
210
210
pub enum Const {
211
211
Id ( Identifier ) ,
212
212
Value ( u32 ) ,
213
213
}
214
214
215
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
215
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
216
216
/// An inline bound, e.g. `: Foo<K>` in `impl<K, T: Foo<K>> SomeType<T>`.
217
217
pub enum InlineBound {
218
218
TraitBound ( TraitBound ) ,
219
219
AliasEqBound ( AliasEqBound ) ,
220
220
}
221
221
222
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
222
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
223
223
pub struct QuantifiedInlineBound {
224
224
pub variable_kinds : Vec < VariableKind > ,
225
225
pub bound : InlineBound ,
226
226
}
227
227
228
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
228
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
229
229
/// Represents a trait bound on e.g. a type or type parameter.
230
230
/// Does not know anything about what it's binding.
231
231
pub struct TraitBound {
232
232
pub trait_name : Identifier ,
233
233
pub args_no_self : Vec < GenericArg > ,
234
234
}
235
235
236
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
236
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
237
237
/// Represents an alias equality bound on e.g. a type or type parameter.
238
238
/// Does not know anything about what it's binding.
239
239
pub struct AliasEqBound {
@@ -284,7 +284,7 @@ pub struct AssocTyValue {
284
284
pub default : bool ,
285
285
}
286
286
287
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
287
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
288
288
pub enum Ty {
289
289
Id {
290
290
name : Identifier ,
@@ -331,7 +331,7 @@ pub enum Ty {
331
331
Never ,
332
332
}
333
333
334
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
334
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
335
335
pub enum IntTy {
336
336
Isize ,
337
337
I8 ,
@@ -341,7 +341,7 @@ pub enum IntTy {
341
341
I128 ,
342
342
}
343
343
344
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
344
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
345
345
pub enum UintTy {
346
346
Usize ,
347
347
U8 ,
@@ -351,13 +351,13 @@ pub enum UintTy {
351
351
U128 ,
352
352
}
353
353
354
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
354
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
355
355
pub enum FloatTy {
356
356
F32 ,
357
357
F64 ,
358
358
}
359
359
360
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
360
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
361
361
pub enum ScalarType {
362
362
Bool ,
363
363
Char ,
@@ -366,13 +366,13 @@ pub enum ScalarType {
366
366
Float ( FloatTy ) ,
367
367
}
368
368
369
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
369
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
370
370
pub enum Mutability {
371
371
Mut ,
372
372
Not ,
373
373
}
374
374
375
- #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
375
+ #[ derive( Copy , Clone , PartialEq , Eq , Debug , Hash ) ]
376
376
pub enum Safety {
377
377
Safe ,
378
378
Unsafe ,
@@ -384,22 +384,22 @@ impl Default for Safety {
384
384
}
385
385
}
386
386
387
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
387
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
388
388
pub enum Lifetime {
389
389
Id { name : Identifier } ,
390
390
Static ,
391
391
Erased ,
392
392
Empty ,
393
393
}
394
394
395
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
395
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
396
396
pub struct ProjectionTy {
397
397
pub trait_ref : TraitRef ,
398
398
pub name : Identifier ,
399
399
pub args : Vec < GenericArg > ,
400
400
}
401
401
402
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
402
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
403
403
pub struct TraitRef {
404
404
pub trait_name : Identifier ,
405
405
pub args : Vec < GenericArg > ,
@@ -424,7 +424,7 @@ impl Polarity {
424
424
}
425
425
}
426
426
427
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
427
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
428
428
pub struct Identifier {
429
429
pub str : Atom ,
430
430
pub span : Span ,
@@ -436,7 +436,7 @@ impl fmt::Display for Identifier {
436
436
}
437
437
}
438
438
439
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
439
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
440
440
pub enum WhereClause {
441
441
Implemented { trait_ref : TraitRef } ,
442
442
ProjectionEq { projection : ProjectionTy , ty : Ty } ,
@@ -469,7 +469,7 @@ pub enum LeafGoal {
469
469
SubtypeGenericArgs { a : Ty , b : Ty } ,
470
470
}
471
471
472
- #[ derive( Clone , PartialEq , Eq , Debug ) ]
472
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
473
473
pub struct QuantifiedWhereClause {
474
474
pub variable_kinds : Vec < VariableKind > ,
475
475
pub where_clause : WhereClause ,
0 commit comments