pub trait TypeRelation<'tcx>: Sized {
Show 14 methods fn tcx(&self) -> TyCtxt<'tcx>; fn intercrate(&self) -> bool; fn param_env(&self) -> ParamEnv<'tcx>; fn tag(&self) -> &'static str; fn a_is_expected(&self) -> bool; fn mark_ambiguous(&mut self); fn relate_with_variance<T: Relate<'tcx>>(
        &mut self,
        variance: Variance,
        info: VarianceDiagInfo<'tcx>,
        a: T,
        b: T
    ) -> RelateResult<'tcx, T>; fn tys(&mut self, a: Ty<'tcx>, b: Ty<'tcx>) -> RelateResult<'tcx, Ty<'tcx>>; fn regions(
        &mut self,
        a: Region<'tcx>,
        b: Region<'tcx>
    ) -> RelateResult<'tcx, Region<'tcx>>; fn consts(
        &mut self,
        a: Const<'tcx>,
        b: Const<'tcx>
    ) -> RelateResult<'tcx, Const<'tcx>>; fn binders<T>(
        &mut self,
        a: Binder<'tcx, T>,
        b: Binder<'tcx, T>
    ) -> RelateResult<'tcx, Binder<'tcx, T>>
        T: Relate<'tcx>
; fn with_cause<F, R>(&mut self, _cause: Cause, f: F) -> R
        F: FnOnce(&mut Self) -> R
, { ... } fn relate<T: Relate<'tcx>>(&mut self, a: T, b: T) -> RelateResult<'tcx, T> { ... } fn relate_item_substs(
        &mut self,
        item_def_id: DefId,
        a_subst: SubstsRef<'tcx>,
        b_subst: SubstsRef<'tcx>
    ) -> RelateResult<'tcx, SubstsRef<'tcx>> { ... }

Required Methods§

Returns a static string we can use for printouts.

Returns true if the value a is the “expected” type in the relation. Just affects error messages.

Used during coherence. If called, must emit an always-ambiguous obligation.

Switch variance for the purpose of relating a and b.

Provided Methods§

Generic relation routine suitable for most anything.

Relate the two substitutions for the given item. The default is to look up the variance for the item and proceed accordingly.