Skip to main content

solverforge_core/
lib.rs

1/* SolverForge Core - Core types and traits for constraint solving
2
3This crate provides the fundamental abstractions for SolverForge:
4- Score types for representing solution quality
5- Domain traits for defining planning problems
6- Descriptor types for runtime metadata
7- Constraint types for incremental evaluation
8*/
9
10/* PhantomData<(fn() -> T, ...)> is an intentional pattern to avoid inheriting
11trait bounds from phantom type parameters. Clippy's type_complexity lint
12triggers on these tuples but the pattern is architecturally required.
13*/
14#![allow(clippy::type_complexity)]
15
16pub mod constraint;
17pub mod domain;
18pub mod error;
19pub mod fast_hash;
20pub mod score;
21
22#[cfg(test)]
23mod constraint_tests;
24
25pub use constraint::{ConstraintRef, ImpactType};
26pub use domain::{PlanningEntity, PlanningId, PlanningSolution, ProblemFact};
27pub use error::SolverForgeError;
28pub use score::{
29    BendableScore, HardMediumSoftScore, HardSoftDecimalScore, HardSoftScore, ParseableScore, Score,
30    ScoreParseError, SoftScore,
31};