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:
- Core Types (this crate) - Language-agnostic types and abstractions
- Language Bindings - Language-specific implementations (Python, JS, etc.)
- Solver Service - HTTP service that executes the solving
§Key Components
Value- Language-agnostic value representationObjectHandle/FunctionHandle- Opaque handles to host language objectsSolverForgeError/SolverForgeResult- Error handling types
§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::Joiner;pub use constraints::StreamComponent;pub use constraints::WasmFunction;pub use domain::ConstraintConfiguration;pub use domain::ConstraintWeight;pub use domain::DeepPlanningClone;pub use domain::PlanningAnnotation;pub use domain::ShadowAnnotation;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::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::PlanningAnnotation as SolverPlanningAnnotation;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::SolverService;pub use solver::SolverStats;pub use solver::TerminationConfig;pub use solver::TypedSolver;pub use solver::DEFAULT_SERVICE_URL;pub use wasm::Comparison;pub use wasm::FieldAccess;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§
Structs§
- Class
Info - Field
Info - Function
Handle - Opaque handle to a language-specific callable (function/lambda)
- Object
Handle - Opaque handle to a language-specific object
Enums§
- Solver
Forge Error - Main error type for SolverForge operations
- Value
- Language-agnostic value representation
Traits§
- Language
Bridge - Planning
Entity - Marker trait for types that can be used as planning entities.
- Planning
Solution - Marker trait for types that can be used as planning solutions.