Struct gpp_solver::Solver[][src]

pub struct Solver<P> { /* fields omitted */ }
Expand description

Hybrid push-pull solver.

Implementations

Create a new Solver instance for a Problem instance.

Consume self and return the wrapped Problem instance.

Get the current Status of the solver.

Enqueue a fragment to be solved.

Only fragments enqueued through this method and their transitive dependencies will be considered for evaluation.

Get an interator to all fragments that are currently punted. Interpretation of punted fragments depends on the current status:

Assume the given fragment is already evaluated.

Run the solver until all enqueued fragments and their transitive dependencies are either solved or proven to be part of cycles. See the module docs for the limitations when concurrency > 1.

Returns an interator with all fragments that are part of at least one cycle, if any. See Solver::punted_iter.

Returns an error if any evaluation returns an error.

Known Issues

Run a single solver step for a single fragment.

Returns false if there are no more fragments that can be evaluated.

Returns an error if Problem::evaluate was called and evaluation returned an error.

Known Issues
  • If Solver::step is not run to completion the Solver may be left in an inconsistent state.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.