solverforge_scoring/lib.rs
1/*
2Zero-erasure incremental constraint scoring for SolverForge.
3
4This crate provides fully-typed incremental scoring infrastructure:
5- Zero-erasure incremental constraints (IncrementalUniConstraint, IncrementalBiConstraint, etc.)
6- Typed score directors (TypedScoreDirector)
7- Tuple-based constraint sets (zero virtual dispatch)
8
9Architecture:
10All scoring is fully monomorphized - no Box<dyn Trait> in hot paths.
11Closures are stored as generic type parameters, not Arc<dyn Fn>.
12*/
13
14// Zero-erasure architecture intentionally uses complex generic types
15#![allow(clippy::type_complexity)]
16
17// Core modules
18pub mod api;
19pub mod constraint;
20pub mod director;
21pub mod stream;
22
23// ============================================================================
24// Zero-Erasure Incremental Constraints
25// ============================================================================
26
27pub use constraint::{
28 GroupedUniConstraint, IncrementalBiConstraint, IncrementalCrossBiConstraint,
29 IncrementalPentaConstraint, IncrementalQuadConstraint, IncrementalTriConstraint,
30 IncrementalUniConstraint,
31};
32
33// ============================================================================
34// Constraint Set (Tuple-Based, Zero-Erasure)
35// ============================================================================
36
37pub use api::constraint_set::{ConstraintResult, ConstraintSet, IncrementalConstraint};
38pub use api::weight_overrides::{ConstraintWeightOverrides, WeightProvider};
39
40// ============================================================================
41// Score Directors
42// ============================================================================
43
44pub use director::typed::TypedScoreDirector;
45pub use director::{
46 RecordingScoreDirector, ScoreDirector, ScoreDirectorFactory, ShadowAwareScoreDirector,
47 ShadowVariableSupport, SimpleScoreDirector, SolvableSolution,
48};
49
50// ============================================================================
51// Analysis (for score explanation)
52// ============================================================================
53
54pub use api::analysis::{
55 ConstraintAnalysis, ConstraintJustification, DetailedConstraintEvaluation,
56 DetailedConstraintMatch, EntityRef, Indictment, IndictmentMap, ScoreExplanation,
57};
58
59// ============================================================================
60// Fluent Constraint Stream API
61// ============================================================================
62
63pub use stream::{
64 BiConstraintBuilder, BiConstraintStream, ConstraintFactory, GroupedConstraintBuilder,
65 GroupedConstraintStream, UniConstraintBuilder, UniConstraintStream,
66};