rustc_middle::ty::elaborate

Trait Elaboratable

source
pub trait Elaboratable<I>
where I: Interner,
{ // Required methods fn predicate(&self) -> <I as Interner>::Predicate; fn child(&self, clause: <I as Interner>::Clause) -> Self; fn child_with_derived_cause( &self, clause: <I as Interner>::Clause, span: <I as Interner>::Span, parent_trait_pred: Binder<I, TraitPredicate<I>>, index: usize, ) -> Self; }
Expand description

Describes how to elaborate an obligation into a sub-obligation.

Required Methods§

source

fn predicate(&self) -> <I as Interner>::Predicate

source

fn child(&self, clause: <I as Interner>::Clause) -> Self

source

fn child_with_derived_cause( &self, clause: <I as Interner>::Clause, span: <I as Interner>::Span, parent_trait_pred: Binder<I, TraitPredicate<I>>, index: usize, ) -> Self

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

source§

impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Clause<'tcx>, Span)

source§

fn predicate(&self) -> Predicate<'tcx>

source§

fn child(&self, clause: Clause<'tcx>) -> Self

source§

fn child_with_derived_cause( &self, clause: Clause<'tcx>, _span: Span, _parent_trait_pred: PolyTraitPredicate<'tcx>, _index: usize, ) -> Self

source§

impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Predicate<'tcx>, Span)

source§

fn predicate(&self) -> Predicate<'tcx>

source§

fn child(&self, clause: Clause<'tcx>) -> Self

source§

fn child_with_derived_cause( &self, clause: Clause<'tcx>, _span: Span, _parent_trait_pred: PolyTraitPredicate<'tcx>, _index: usize, ) -> Self

Implementors§

source§

impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Clause<'tcx>

source§

impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Predicate<'tcx>

source§

impl<I> Elaboratable<I> for ClauseWithSupertraitSpan<I>
where I: Interner,