solverforge-scoring 0.13.1

Incremental constraint scoring for SolverForge
Documentation
/*
Zero-erasure incremental constraint scoring for SolverForge.

This crate provides monomorphized incremental scoring infrastructure:
- Zero-erasure incremental constraints (IncrementalUniConstraint, IncrementalBiConstraint, etc.)
- Incremental score directors (ScoreDirector)
- Tuple-based constraint sets (zero virtual dispatch)

Architecture:
All scoring is fully monomorphized - no Box<dyn Trait> in hot paths.
Closures are stored as generic type parameters, not Arc<dyn Fn>.
*/

// Zero-erasure architecture intentionally uses complex generic types
#![allow(clippy::type_complexity)]

// Core modules
pub mod api;
pub mod constraint;
pub mod director;
pub mod stream;

/* ============================================================================
Zero-Erasure Incremental Constraints
============================================================================
*/

pub use constraint::{
    CrossGroupedConstraint, GroupedUniConstraint, IncrementalBiConstraint,
    IncrementalCrossBiConstraint, IncrementalPentaConstraint, IncrementalQuadConstraint,
    IncrementalTriConstraint, IncrementalUniConstraint, ProjectedComplementedGroupedConstraint,
    ProjectedGroupedConstraint, ProjectedUniConstraint,
};

/* ============================================================================
Constraint Set (Tuple-Based, Zero-Erasure)
============================================================================
*/

pub use api::constraint_set::{
    ConstraintMetadata, ConstraintResult, ConstraintSet, IncrementalConstraint,
};
pub use api::weight_overrides::{ConstraintWeightOverrides, WeightProvider};

/* ============================================================================
Score Directors
============================================================================
*/

pub use director::score_director::ScoreDirector;
pub use director::{Director, DirectorScoreState, SolvableSolution};

/* ============================================================================
Analysis (for score explanation)
============================================================================
*/

pub use api::analysis::{
    ConstraintAnalysis, ConstraintJustification, DetailedConstraintEvaluation,
    DetailedConstraintMatch, EntityRef, Indictment, IndictmentMap, ScoreExplanation,
};

/* ============================================================================
Fluent Constraint Stream API
============================================================================
*/

pub use stream::{
    fixed_weight, hard_weight, BiConstraintBuilder, BiConstraintStream, ConstraintFactory,
    CrossGroupedConstraintBuilder, CrossGroupedConstraintStream, FixedWeight,
    GroupedConstraintBuilder, GroupedConstraintStream, HardWeight, ProjectedBiConstraintBuilder,
    ProjectedBiConstraintStream, ProjectedComplementedGroupedConstraintBuilder,
    ProjectedComplementedGroupedConstraintStream, ProjectedConstraintBuilder,
    ProjectedConstraintStream, ProjectedGroupedConstraintBuilder, ProjectedGroupedConstraintStream,
    Projection, ProjectionSink, UniConstraintBuilder, UniConstraintStream,
};