[][src]Trait rustc_traits::lowering::Lower

pub(crate) trait Lower<T> {
    fn lower(&self) -> T;
}
🔬 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?

Lower a rustc construct (e.g. ty::TraitPredicate) to a chalk-like type.

Implementations on Foreign Types

impl<T, U> Lower<Vec<U>> for Vec<T> where
    T: Lower<U>, 
[src]

🔬 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?

impl<'tcx> Lower<WhereClause<'tcx>> for TraitPredicate<'tcx>
[src]

🔬 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?

impl<'tcx> Lower<WhereClause<'tcx>> for ProjectionPredicate<'tcx>
[src]

🔬 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?

impl<'tcx> Lower<WhereClause<'tcx>> for RegionOutlivesPredicate<'tcx>
[src]

🔬 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?

impl<'tcx> Lower<WhereClause<'tcx>> for TypeOutlivesPredicate<'tcx>
[src]

🔬 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?

impl<'tcx, T> Lower<PolyDomainGoal<'tcx>> for Binder<T> where
    T: Lower<DomainGoal<'tcx>> + TypeFoldable<'tcx>, 
[src]

ty::Binder is used for wrapping a rustc construction possibly containing generic lifetimes, e.g. for<'a> T: Fn(&'a i32). Instead of representing higher-ranked things in that leaf-form (i.e. Holds(Implemented(Binder<TraitPredicate>)) in the previous example), we model them with quantified domain goals, e.g. as for the previous example: forall<'a> { T: Fn(&'a i32) } which corresponds to something like Binder<Holds(Implemented(TraitPredicate))>.

🔬 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?

impl<'tcx> Lower<PolyDomainGoal<'tcx>> for Predicate<'tcx>
[src]

🔬 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?

Implementors

impl<'tcx, T> Lower<DomainGoal<'tcx>> for T where
    T: Lower<WhereClause<'tcx>>, 
[src]

🔬 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?