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
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)
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 Obligation<'tcx, Predicate<'tcx>>
For Obligation
, a sub-obligation is combined with the current obligation’s
param-env and cause code.