[−][src]Trait rustc_middle::ty::relate::TypeRelation

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

Required methods

pub fn tcx(&self) -> TyCtxt<'tcx>[src]

pub fn param_env(&self) -> ParamEnv<'tcx>[src]

pub fn tag(&self) -> &'static str[src]

Returns a static string we can use for printouts.

pub fn a_is_expected(&self) -> bool[src]

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

pub fn relate_with_variance<T: Relate<'tcx>>(
    &mut self,
    variance: Variance,
    a: T,
    b: T
) -> RelateResult<'tcx, T>
[src]

Switch variance for the purpose of relating a and b.

pub fn tys(&mut self, a: Ty<'tcx>, b: Ty<'tcx>) -> RelateResult<'tcx, Ty<'tcx>>[src]

pub fn regions(
    &mut self,
    a: Region<'tcx>,
    b: Region<'tcx>
) -> RelateResult<'tcx, Region<'tcx>>
[src]

pub fn consts(
    &mut self,
    a: &'tcx Const<'tcx>,
    b: &'tcx Const<'tcx>
) -> RelateResult<'tcx, &'tcx Const<'tcx>>
[src]

pub fn binders<T>(
    &mut self,
    a: Binder<T>,
    b: Binder<T>
) -> RelateResult<'tcx, Binder<T>> where
    T: Relate<'tcx>, 
[src]

Loading content...

Provided methods

pub fn with_cause<F, R>(&mut self, _cause: Cause, f: F) -> R where
    F: FnOnce(&mut Self) -> R, 
[src]

pub fn relate<T: Relate<'tcx>>(&mut self, a: T, b: T) -> RelateResult<'tcx, T>[src]

Generic relation routine suitable for most anything.

pub fn relate_item_substs(
    &mut self,
    item_def_id: DefId,
    a_subst: SubstsRef<'tcx>,
    b_subst: SubstsRef<'tcx>
) -> RelateResult<'tcx, SubstsRef<'tcx>>
[src]

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

Loading content...

Implementors

impl<'tcx> TypeRelation<'tcx> for Match<'tcx>[src]

Loading content...