Trait rustc_trait_selection::traits::util::Elaboratable
source · pub trait Elaboratable<'tcx> {
// Required methods
fn predicate(&self) -> Predicate<'tcx>;
fn child(&self, clause: Clause<'tcx>) -> Self;
fn child_with_derived_cause(
&self,
clause: Clause<'tcx>,
span: Span,
parent_trait_pred: Binder<'tcx, TraitPredicate<'tcx>>,
index: usize
) -> Self;
}
Expand description
Describes how to elaborate an obligation into a sub-obligation.
For Obligation
, a sub-obligation is combined with the current obligation’s
param-env and cause code. For ty::Predicate
, none of this is needed, since
there is no param-env or cause code to copy over.