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 score;
20
21#[cfg(test)]
22mod constraint_tests;
23
24pub use constraint::{ConstraintRef, ImpactType};
25pub use domain::{PlanningEntity, PlanningId, PlanningSolution, ProblemFact};
26pub use error::SolverForgeError;
27pub use score::{
28 BendableScore, HardMediumSoftScore, HardSoftDecimalScore, HardSoftScore, ParseableScore, Score,
29 ScoreParseError, SoftScore,
30};