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: Region<'tcx>,
        b: Region<'tcx>
    ) -> RelateResult<'tcx, Region<'tcx>>;
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> { ... }
fn relate_item_substs(
        &mut self,
        item_def_id: DefId,
        a_subst: &'tcx Substs<'tcx>,
        b_subst: &'tcx Substs<'tcx>
    ) -> RelateResult<'tcx, &'tcx Substs<'tcx>> { ... } }
🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Required Methods

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Returns a static string we can use for printouts.

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Switch variance for the purpose of relating a and b.

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Provided Methods

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Generic relation routine suitable for most anything.

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

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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

Implementors