solverforge_core/lib.rs
1//! SolverForge Core - Core types and traits for constraint solving
2//!
3//! This 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// PhantomData<(fn() -> T, ...)> is an intentional pattern to avoid inheriting
10// trait bounds from phantom type parameters. Clippy's type_complexity lint
11// triggers on these tuples but the pattern is architecturally required.
12#![allow(clippy::type_complexity)]
13
14pub mod constraint;
15pub mod domain;
16pub mod error;
17pub mod score;
18
19#[cfg(test)]
20mod constraint_tests;
21
22pub use constraint::{ConstraintRef, ImpactType};
23pub use domain::{PlanningEntity, PlanningId, PlanningSolution, ProblemFact};
24pub use error::SolverForgeError;
25pub use score::{
26 BendableScore, HardMediumSoftScore, HardSoftDecimalScore, HardSoftScore, ParseableScore, Score,
27 ScoreParseError, SimpleScore,
28};