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
fn tcx(&self) -> TyCtxt<'a, 'gcx, 'tcx>
🔬 This is a nightly-only experimental API. (
rustc_private)fn tag(&self) -> &'static str
🔬 This is a nightly-only experimental API. (
rustc_private)Returns a static string we can use for printouts.
fn a_is_expected(&self) -> bool
🔬 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.
fn relate_with_variance<T: Relate<'tcx>>(&mut self,
variance: Variance,
a: &T,
b: &T)
-> RelateResult<'tcx, T>
variance: Variance,
a: &T,
b: &T)
-> RelateResult<'tcx, T>
🔬 This is a nightly-only experimental API. (
rustc_private)Switch variance for the purpose of relating a and b.
fn tys(&mut self, a: Ty<'tcx>, b: Ty<'tcx>) -> RelateResult<'tcx, Ty<'tcx>>
🔬 This is a nightly-only experimental API. (
rustc_private)fn regions(&mut self,
a: &'tcx Region,
b: &'tcx Region)
-> RelateResult<'tcx, &'tcx Region>
a: &'tcx Region,
b: &'tcx Region)
-> RelateResult<'tcx, &'tcx Region>
🔬 This is a nightly-only experimental API. (
rustc_private)fn binders<T>(&mut self,
a: &Binder<T>,
b: &Binder<T>)
-> RelateResult<'tcx, Binder<T>> where T: Relate<'tcx>
a: &Binder<T>,
b: &Binder<T>)
-> RelateResult<'tcx, Binder<T>> where T: Relate<'tcx>
🔬 This is a nightly-only experimental API. (
rustc_private)Provided Methods
fn with_cause<F, R>(&mut self, _cause: Cause, f: F) -> R where F: FnOnce(&mut Self) -> R
🔬 This is a nightly-only experimental API. (
rustc_private)fn relate<T: Relate<'tcx>>(&mut self, a: &T, b: &T) -> RelateResult<'tcx, T>
🔬 This is a nightly-only experimental API. (
rustc_private)Generic relation routine suitable for most anything.
Implementors
impl<'a, 'gcx, 'tcx> TypeRelation<'a, 'gcx, 'tcx> for Match<'a, 'gcx, 'tcx>