@@ -513,6 +513,12 @@ static_assert_size!(PredicateS<'_>, 56);
513513#[ cfg_attr( not( bootstrap) , rustc_pass_by_value) ]
514514pub struct Predicate < ' tcx > ( Interned < ' tcx , PredicateS < ' tcx > > ) ;
515515
516+ impl < ' tcx > HashStableEq for Predicate < ' tcx > {
517+ fn hash_stable_eq ( & self , other : & Self ) -> bool {
518+ self == other
519+ }
520+ }
521+
516522impl < ' tcx > Predicate < ' tcx > {
517523 /// Gets the inner `Binder<'tcx, PredicateKind<'tcx>>`.
518524 #[ inline]
@@ -1289,7 +1295,7 @@ impl WithOptConstParam<DefId> {
12891295/// When type checking, we use the `ParamEnv` to track
12901296/// details about the set of where-clauses that are in scope at this
12911297/// particular point.
1292- #[ derive( Copy , Clone , Hash , PartialEq , Eq ) ]
1298+ #[ derive( Copy , Clone , Hash , PartialEq , Eq , HashStableEq ) ]
12931299pub struct ParamEnv < ' tcx > {
12941300 /// This packs both caller bounds and the reveal enum into one pointer.
12951301 ///
@@ -1524,7 +1530,7 @@ impl<'tcx> PolyTraitRef<'tcx> {
15241530 }
15251531}
15261532
1527- #[ derive( Copy , Clone , Debug , PartialEq , Eq , Hash , TypeFoldable ) ]
1533+ #[ derive( Copy , Clone , Debug , PartialEq , Eq , Hash , TypeFoldable , HashStableEq ) ]
15281534pub struct ParamEnvAnd < ' tcx , T > {
15291535 pub param_env : ParamEnv < ' tcx > ,
15301536 pub value : T ,
0 commit comments