Crate solverforge_core

Crate solverforge_core 

Source
Expand description

SolverForge Core - Language-agnostic constraint solver library

This crate provides the core functionality for SolverForge, a Rust-based constraint solver library that uses WASM modules and HTTP communication to solve constraint satisfaction and optimization problems by acting as a bridge towards the Timefold JVM.

§Architecture

SolverForge is designed with a layered architecture:

  1. Core Types (this crate) - Language-agnostic types and abstractions
  2. Language Bindings - Language-specific implementations (Python, JS, etc.)
  3. Solver Service - HTTP service that executes the solving

§Key Components

§Example

use solverforge_core::{Value, ObjectHandle, FunctionHandle};

// Create values
let int_val = Value::from(42i64);
let str_val = Value::from("hello");

// Create handles
let obj_handle = ObjectHandle::new(1);
let func_handle = FunctionHandle::new(2);

// Use in a map
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert(obj_handle, "object 1");

Re-exports§

pub use analysis::ConstraintMatch;
pub use analysis::Indictment;
pub use analysis::ScoreExplanation;
pub use analysis::SolutionManager;
pub use constraints::Collector;
pub use constraints::Constraint;
pub use constraints::ConstraintSet;
pub use constraints::IntoNamedExpression;
pub use constraints::Joiner;
pub use constraints::NamedExpression;
pub use constraints::StreamComponent;
pub use constraints::WasmFunction;
pub use domain::ConstraintConfiguration;
pub use domain::ConstraintWeight;
pub use domain::DeepPlanningClone;
pub use domain::DefaultVariableListenerContext;
pub use domain::ListVariableListener;
pub use domain::ListenerCallbackDto;
pub use domain::PlanningAnnotation;
pub use domain::ShadowAnnotation;
pub use domain::SourceVariableRef;
pub use domain::VariableListener;
pub use domain::VariableListenerContext;
pub use domain::VariableListenerRegistration;
pub use score::BendableDecimalScore;
pub use score::BendableScore;
pub use score::HardMediumSoftDecimalScore;
pub use score::HardMediumSoftScore;
pub use score::HardSoftDecimalScore;
pub use score::HardSoftScore;
pub use score::Score;
pub use score::SimpleDecimalScore;
pub use score::SimpleScore;
pub use solver::AsyncSolveResponse;
pub use solver::ChangeConsumer;
pub use solver::ClassAnnotation;
pub use solver::DefaultProblemChangeDirector;
pub use solver::DiminishedReturnsConfig;
pub use solver::DomainAccessor;
pub use solver::DomainObjectDto;
pub use solver::DomainObjectMapper;
pub use solver::EnvironmentMode;
pub use solver::FieldDescriptor;
pub use solver::HttpSolverService;
pub use solver::ListAccessorDto;
pub use solver::MoveThreadCount;
pub use solver::ProblemChange;
pub use solver::ProblemChangeDirector;
pub use solver::ProblemChangeDto;
pub use solver::ProblemChangeError;
pub use solver::ScoreDto;
pub use solver::SolveHandle;
pub use solver::SolveRequest;
pub use solver::SolveResponse;
pub use solver::SolveState;
pub use solver::SolveStatus;
pub use solver::Solver;
pub use solver::SolverBuilder;
pub use solver::SolverConfig;
pub use solver::SolverFactory;
pub use solver::SolverManager;
pub use solver::SolverService;
pub use solver::SolverStats;
pub use solver::TerminationConfig;
pub use solver::TypedSolver;
pub use solver::DEFAULT_SERVICE_URL;
pub use wasm::Expr;
pub use wasm::Expression;
pub use wasm::FieldAccessExt;
pub use wasm::FieldLayout;
pub use wasm::LayoutCalculator;
pub use wasm::MemoryLayout;
pub use wasm::PredicateDefinition;
pub use wasm::WasmMemoryType;
pub use wasm::WasmModuleBuilder;

Modules§

analysis
constraints
domain
entity_context
Thread-local context for canonical entity deduplication during deserialization.
score
solver
wasm

Structs§

ClassInfo
FieldInfo
FunctionHandle
Opaque handle to a language-specific callable (function/lambda)
ObjectHandle
Opaque handle to a language-specific object

Enums§

SolverForgeError
Main error type for SolverForge operations
Value
Language-agnostic value representation

Traits§

DomainStruct
Trait for structs that can be represented in the domain model.
LanguageBridge
PlanningEntity
Marker trait for types that can be used as planning entities.
PlanningSolution
Marker trait for types that can be used as planning solutions.

Type Aliases§

SolverForgeResult