API overview
The public modules and their main types. Every item is documented on docs.rs.
The crate root re-exports the types most programs need, so use unifier::... is usually
enough. The modules follow the layers of the design: a problem-building surface (dsl), the
constraint model (model, constraint, propagation, score) and the solver engine
(solver).
| Module | Main items | Purpose |
|---|---|---|
dsl |
ModelBuilder |
Builds a model and validates it with build() |
model |
Variable, VariableId, Domain, Interval, Activity, Resource, Group, TrailedDomains |
Variables, domains and scheduling data |
constraint |
Constraint, AllDifferent, NoOverlap, Cumulative, Precedence, … |
The constraint trait and the built-in constraints |
propagation |
ConstraintGraph, ValidatedGraph, PropagationEngine, ModelError, ConstraintViolation |
The constraint graph, validation and AC-3 propagation |
score |
HardSoftScore, ScoreLevel, Objective, CategorizedObjective, WeightedSum, ScoreCalculator |
Hard/soft scoring on lexicographic levels, and objectives |
solver |
BacktrackingSolver, BranchAndBoundSolver, LocalSearchSolver, LnsSolver, ParallelSolver, SolverOptions, SolveOutcome, SolveStatus |
Search strategies and their results |
Every public function and constraint documents its complexity and the paper or textbook it is based on.
Item-level documentation
The full API, generated from the source, is on docs.rs/unifier/0.3.2. The package page is crates.io/crates/unifier.
Examples
The programs in examples/ use only
the public API: nqueens, map_coloring, job_shop and scheduling_demo are shown in the
showcase; bench_search is a throughput benchmark over a small problem
corpus.