## Elaboratable

# Trait Elaboratable

Source

    pub trait Elaboratable<I: Interner> {
        // Required methods
        fn predicate(&self) -> I::Predicate;
        fn child(&self, clause: I::Clause) -> Self;
        fn child_with_derived_cause(
            &self,
            clause: I::Clause,
            span: I::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::Predicate

Source

#### fn child(&self, clause: I::Clause) -> Self

Source

#### fn child_with_derived_cause( &self, clause: I::Clause, span: I::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.

## Implementors§

Source§

### impl<I: Interner> Elaboratable<I> for ClauseWithSupertraitSpan<I>