trait SolveIterationHelpers<I: Interner>: SolveDatabase<I> {
    // Provided methods
    fn solve_via_simplification(
        &mut self,
        canonical_goal: &UCanonicalGoal<I>,
        minimums: &mut Minimums,
        should_continue: impl Fn() -> bool + Clone
    ) -> Fallible<Solution<I>> { ... }
    fn solve_from_clauses(
        &mut self,
        canonical_goal: &UCanonical<InEnvironment<DomainGoal<I>>>,
        minimums: &mut Minimums,
        should_continue: impl Fn() -> bool + Clone
    ) -> Fallible<Solution<I>> { ... }
    fn new_inference_table<T: TypeFoldable<I> + HasInterner<Interner = I> + Clone>(
        &self,
        ucanonical_goal: &UCanonical<InEnvironment<T>>
    ) -> (InferenceTable<I>, Substitution<I>, InEnvironment<T>) { ... }
}
Expand description

Helper methods for solve_iteration, private to this module.

Provided Methods§

source

fn solve_via_simplification( &mut self, canonical_goal: &UCanonicalGoal<I>, minimums: &mut Minimums, should_continue: impl Fn() -> bool + Clone ) -> Fallible<Solution<I>>

source

fn solve_from_clauses( &mut self, canonical_goal: &UCanonical<InEnvironment<DomainGoal<I>>>, minimums: &mut Minimums, should_continue: impl Fn() -> bool + Clone ) -> Fallible<Solution<I>>

See whether we can solve a goal by implication on any of the given clauses. If multiple such solutions are possible, we attempt to combine them.

source

fn new_inference_table<T: TypeFoldable<I> + HasInterner<Interner = I> + Clone>( &self, ucanonical_goal: &UCanonical<InEnvironment<T>> ) -> (InferenceTable<I>, Substitution<I>, InEnvironment<T>)

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<S, I> SolveIterationHelpers<I> for S
where S: SolveDatabase<I>, I: Interner,