]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_trait_selection/src/traits/query/type_op/eq.rs
Auto merge of #107303 - compiler-errors:intern-canonical-var-values, r=lcnr
[rust.git] / compiler / rustc_trait_selection / src / traits / query / type_op / eq.rs
1 use crate::infer::canonical::{Canonical, CanonicalQueryResponse};
2 use crate::traits::query::Fallible;
3 use rustc_middle::ty::{ParamEnvAnd, TyCtxt};
4
5 pub use rustc_middle::traits::query::type_op::Eq;
6
7 impl<'tcx> super::QueryTypeOp<'tcx> for Eq<'tcx> {
8     type QueryResponse = ();
9
10     fn try_fast_path(
11         _tcx: TyCtxt<'tcx>,
12         key: &ParamEnvAnd<'tcx, Eq<'tcx>>,
13     ) -> Option<Self::QueryResponse> {
14         if key.value.a == key.value.b { Some(()) } else { None }
15     }
16
17     fn perform_query(
18         tcx: TyCtxt<'tcx>,
19         canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>,
20     ) -> Fallible<CanonicalQueryResponse<'tcx, ()>> {
21         tcx.type_op_eq(canonicalized)
22     }
23 }