Trait rustc::ty::relate::TypeRelation [] [src]

pub trait TypeRelation<'a, 'gcx: 'a + 'tcx, 'tcx: 'a>: Sized {
    fn tcx(&self) -> TyCtxt<'a, 'gcx, 'tcx>;
    fn tag(&self) -> &'static str;
    fn a_is_expected(&self) -> bool;
    fn relate_with_variance<T: Relate<'tcx>>(&mut self,
                                             variance: Variance,
                                             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: &'tcx Region,
               b: &'tcx Region)
               -> RelateResult<'tcx, &'tcx Region>; fn binders<T>(&mut self,
                  a: &Binder<T>,
                  b: &Binder<T>)
                  -> RelateResult<'tcx, Binder<T>> where T: Relate<'tcx>; fn with_cause<F, R>(&mut self, _cause: Cause, f: F) -> R where F: FnOnce(&mut Self) -> R { ... } fn relate<T: Relate<'tcx>>(&mut self, a: &T, b: &T) -> RelateResult<'tcx, T> { ... } }
🔬 This is a nightly-only experimental API. (rustc_private)

Required Methods

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Returns a static string we can use for printouts.

🔬 This is a nightly-only experimental API. (rustc_private)

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

🔬 This is a nightly-only experimental API. (rustc_private)

Switch variance for the purpose of relating a and b.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Provided Methods

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Generic relation routine suitable for most anything.

Implementors