pub(crate) trait SolverStuff<K, V>: Copy
where K: Hash + Eq + Debug + Clone, V: Debug + Clone,
{ // Required methods fn is_coinductive_goal(self, goal: &K) -> bool; fn initial_value(self, goal: &K, coinductive_goal: bool) -> V; fn solve_iteration( self, context: &mut RecursiveContext<K, V>, goal: &K, minimums: &mut Minimums, should_continue: impl Fn() -> bool + Clone ) -> V; fn reached_fixed_point(self, old_value: &V, new_value: &V) -> bool; fn error_value(self) -> V; }

Required Methods§

source

fn is_coinductive_goal(self, goal: &K) -> bool

source

fn initial_value(self, goal: &K, coinductive_goal: bool) -> V

source

fn solve_iteration( self, context: &mut RecursiveContext<K, V>, goal: &K, minimums: &mut Minimums, should_continue: impl Fn() -> bool + Clone ) -> V

source

fn reached_fixed_point(self, old_value: &V, new_value: &V) -> bool

source

fn error_value(self) -> V

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<I: Interner> SolverStuff<UCanonical<InEnvironment<Goal<I>>>, Result<Solution<I>, NoSolution>> for &dyn RustIrDatabase<I>

source§

fn is_coinductive_goal(self, goal: &UCanonicalGoal<I>) -> bool

source§

fn initial_value( self, goal: &UCanonicalGoal<I>, coinductive_goal: bool ) -> Fallible<Solution<I>>

source§

fn solve_iteration( self, context: &mut RecursiveContext<UCanonicalGoal<I>, Fallible<Solution<I>>>, goal: &UCanonicalGoal<I>, minimums: &mut Minimums, should_continue: impl Fn() -> bool + Clone ) -> Fallible<Solution<I>>

source§

fn reached_fixed_point( self, old_answer: &Fallible<Solution<I>>, current_answer: &Fallible<Solution<I>> ) -> bool

source§

fn error_value(self) -> Fallible<Solution<I>>

Implementors§