Struct gpp_solver::Solver [−][src]
pub struct Solver<P> { /* fields omitted */ }Expand description
Hybrid push-pull solver.
Implementations
Consume self and return the wrapped Problem instance.
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:
Status::Pending: fragments are pending on dependencies.Status::DoneWithCycles: fragments are part of one or more cycles.Status::Done: the returned iterator will be empty.
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
- If
Solver::enqueue_fragmentis called whileSolver::runis executing, those new fragments may not be solved. - If
Solver::runreturns with an error, theSolvermay be left in an inconsistent state.
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::stepis not run to completion theSolvermay be left in an inconsistent state.