Struct chalk_recursive::RecursiveSolver[][src]

pub struct RecursiveSolver<I: Interner> { /* fields omitted */ }

Implementations

impl<I: Interner> RecursiveSolver<I>[src]

pub fn new(
    overflow_depth: usize,
    max_size: usize,
    caching_enabled: bool
) -> Self
[src]

Trait Implementations

impl<I: Interner> Debug for RecursiveSolver<I>[src]

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<I: Interner> Solver<I> for RecursiveSolver<I>[src]

fn solve(
    &mut self,
    program: &dyn RustIrDatabase<I>,
    goal: &UCanonical<InEnvironment<Goal<I>>>
) -> Option<Solution<I>>
[src]

Attempts to solve the given goal, which must be in canonical form. Returns a unique solution (if one exists). This will do only as much work towards goal as it has to (and that work is cached for future attempts). Read more

fn solve_limited(
    &mut self,
    program: &dyn RustIrDatabase<I>,
    goal: &UCanonical<InEnvironment<Goal<I>>>,
    _should_continue: &dyn Fn() -> bool
) -> Option<Solution<I>>
[src]

Attempts to solve the given goal, which must be in canonical form. Returns a unique solution (if one exists). This will do only as much work towards goal as it has to (and that work is cached for future attempts). In addition, the solving of the goal can be limited by returning false from should_continue. Read more

fn solve_multiple(
    &mut self,
    _program: &dyn RustIrDatabase<I>,
    _goal: &UCanonical<InEnvironment<Goal<I>>>,
    _f: &mut dyn FnMut(SubstitutionResult<Canonical<ConstrainedSubst<I>>>, bool) -> bool
) -> bool
[src]

Attempts to solve the given goal, which must be in canonical form. Provides multiple solutions to function f. This will do only as much work towards goal as it has to (and that work is cached for future attempts). Read more

fn has_unique_solution(
    &mut self,
    program: &dyn RustIrDatabase<I>,
    goal: &UCanonical<InEnvironment<Goal<I>>>
) -> bool
[src]

A convenience method for when one doesn’t need the actual solution, only whether or not one exists. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> Cast for T[src]

fn cast<U>(self, interner: &<U as HasInterner>::Interner) -> U where
    Self: CastTo<U>,
    U: HasInterner
[src]

Cast a value to type U using CastTo.

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.