Trait rustc_infer::traits::util::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§
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
Object Safety§
This trait is not object safe.
Implementations on Foreign Types§
source§impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Clause<'tcx>, Span)
impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Clause<'tcx>, Span)
fn predicate(&self) -> Predicate<'tcx>
fn child(&self, clause: Clause<'tcx>) -> (Clause<'tcx>, Span)
fn child_with_derived_cause( &self, clause: Clause<'tcx>, _span: Span, _parent_trait_pred: Binder<TyCtxt<'tcx>, TraitPredicate<TyCtxt<'tcx>>>, _index: usize, ) -> (Clause<'tcx>, Span)
source§impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Predicate<'tcx>, Span)
impl<'tcx> Elaboratable<TyCtxt<'tcx>> for (Predicate<'tcx>, Span)
fn predicate(&self) -> Predicate<'tcx>
fn child(&self, clause: Clause<'tcx>) -> (Predicate<'tcx>, Span)
fn child_with_derived_cause( &self, clause: Clause<'tcx>, _span: Span, _parent_trait_pred: Binder<TyCtxt<'tcx>, TraitPredicate<TyCtxt<'tcx>>>, _index: usize, ) -> (Predicate<'tcx>, Span)
source§impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Clause<'tcx>
impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Clause<'tcx>
source§impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Predicate<'tcx>
impl<'tcx> Elaboratable<TyCtxt<'tcx>> for Predicate<'tcx>
Implementors§
impl<'tcx> Elaboratable<TyCtxt<'tcx>> for PredicateObligation<'tcx>
For Obligation
, a sub-obligation is combined with the current obligation’s
param-env and cause code.