Trait rustc_middle::ty::elaborate::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

Object Safety§

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>