match self {
ty::subst::UnpackedKind::Lifetime(lt) => lt.hash_stable(hcx, hasher),
ty::subst::UnpackedKind::Type(ty) => ty.hash_stable(hcx, hasher),
+ ty::subst::UnpackedKind::Const(ct) => ct.hash_stable(hcx, hasher),
}
}
}
}
}
+impl<'gcx, 'tcx> HashStable<StableHashingContext<'gcx>> for ty::ConstVid<'tcx> {
+ #[inline]
+ fn hash_stable<W: StableHasherResult>(&self,
+ hcx: &mut StableHashingContext<'gcx>,
+ hasher: &mut StableHasher<W>) {
+ self.index.hash_stable(hcx, hasher);
+ }
+}
+
impl<'gcx> HashStable<StableHashingContext<'gcx>> for ty::BoundVar {
#[inline]
fn hash_stable<W: StableHasherResult>(&self,
}
}
+impl_stable_hash_for!(
+ impl<'tcx> for enum ty::InferConst<'tcx> [ ty::InferConst ] {
+ Var(vid),
+ Fresh(i),
+ Canonical(debruijn, var),
+ }
+);
+
impl_stable_hash_for!(enum ty::VariantDiscr {
Explicit(def_id),
Relative(distance)
impl_stable_hash_for!(
impl<'tcx> for enum mir::interpret::ConstValue<'tcx> [ mir::interpret::ConstValue ] {
+ Param(param),
+ Infer(infer),
Scalar(val),
Slice(a, b),
ByRef(ptr, alloc),
}
);
+
impl_stable_hash_for!(struct crate::mir::interpret::RawConst<'tcx> {
alloc_id,
ty,
impl_stable_hash_for!(enum ty::GenericParamDefKind {
Lifetime,
Type { has_default, object_lifetime_default, synthetic },
+ Const,
});
impl_stable_hash_for!(
}
}
+impl_stable_hash_for!(struct ty::ParamConst {
+ index,
+ name
+});
+
impl_stable_hash_for!(struct ty::ParamTy {
idx,
name