Skip to main content

Elaboratable

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".

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,