pub enum SolverError {
NoSolution {
context: Option<String>,
variable_count: Option<usize>,
constraint_count: Option<usize>,
},
Timeout {
elapsed_seconds: Option<f64>,
operation: Option<String>,
},
MemoryLimit {
usage_mb: Option<usize>,
limit_mb: Option<usize>,
},
InvalidConstraint {
message: String,
constraint_name: Option<String>,
variables: Option<Vec<String>>,
},
ConflictingConstraints {
constraint_names: Option<Vec<String>>,
variables: Option<Vec<String>>,
context: Option<String>,
},
InvalidDomain {
message: String,
variable_name: Option<String>,
domain_info: Option<String>,
},
InvalidVariable {
message: String,
variable_id: Option<String>,
expected: Option<String>,
},
InternalError {
message: String,
location: Option<String>,
debug_info: Option<String>,
},
}Expand description
Simple error types for the CSP solver
This enum covers the basic failure modes that can occur during solving. Each error includes contextual information to help with debugging.
Variants§
NoSolution
No solution exists for the given constraints
Fields
Timeout
Solving operation timed out
Fields
MemoryLimit
Memory limit was exceeded during solving
Fields
InvalidConstraint
Invalid constraint was provided
Fields
ConflictingConstraints
Conflicting constraints detected (unsatisfiable)
Fields
InvalidDomain
Invalid variable domain (e.g., min > max)
Fields
InvalidVariable
Variable ID is invalid or out of bounds
Fields
InternalError
Internal solver error (should not happen in normal use)
Implementations§
Source§impl SolverError
impl SolverError
Sourcepub fn no_solution() -> Self
pub fn no_solution() -> Self
Create a simple NoSolution error without context
Sourcepub fn no_solution_with_context(
context: impl Into<String>,
var_count: usize,
constraint_count: usize,
) -> Self
pub fn no_solution_with_context( context: impl Into<String>, var_count: usize, constraint_count: usize, ) -> Self
Create a NoSolution error with context
Sourcepub fn timeout_with_context(
elapsed_seconds: f64,
operation: impl Into<String>,
) -> Self
pub fn timeout_with_context( elapsed_seconds: f64, operation: impl Into<String>, ) -> Self
Create a Timeout error with context
Sourcepub fn memory_limit() -> Self
pub fn memory_limit() -> Self
Create a simple MemoryLimit error
Sourcepub fn memory_limit_with_context(usage_mb: usize, limit_mb: usize) -> Self
pub fn memory_limit_with_context(usage_mb: usize, limit_mb: usize) -> Self
Create a MemoryLimit error with usage info
Sourcepub fn invalid_constraint(message: impl Into<String>) -> Self
pub fn invalid_constraint(message: impl Into<String>) -> Self
Create an InvalidConstraint error with minimal context
Sourcepub fn invalid_constraint_with_context(
message: impl Into<String>,
constraint_name: impl Into<String>,
variables: Vec<String>,
) -> Self
pub fn invalid_constraint_with_context( message: impl Into<String>, constraint_name: impl Into<String>, variables: Vec<String>, ) -> Self
Create an InvalidConstraint error with full context
Sourcepub fn conflicting_constraints_with_names(constraint_names: Vec<String>) -> Self
pub fn conflicting_constraints_with_names(constraint_names: Vec<String>) -> Self
Create a ConflictingConstraints error with constraint names
Sourcepub fn conflicting_constraints_with_context(
constraint_names: Vec<String>,
variables: Vec<String>,
context: impl Into<String>,
) -> Self
pub fn conflicting_constraints_with_context( constraint_names: Vec<String>, variables: Vec<String>, context: impl Into<String>, ) -> Self
Create a ConflictingConstraints error with full context
Sourcepub fn invalid_domain(message: impl Into<String>) -> Self
pub fn invalid_domain(message: impl Into<String>) -> Self
Create an InvalidDomain error with minimal context
Sourcepub fn invalid_domain_with_context(
message: impl Into<String>,
variable_name: impl Into<String>,
domain_info: impl Into<String>,
) -> Self
pub fn invalid_domain_with_context( message: impl Into<String>, variable_name: impl Into<String>, domain_info: impl Into<String>, ) -> Self
Create an InvalidDomain error with full context
Sourcepub fn invalid_variable(message: impl Into<String>) -> Self
pub fn invalid_variable(message: impl Into<String>) -> Self
Create an InvalidVariable error with minimal context
Sourcepub fn invalid_variable_with_context(
message: impl Into<String>,
variable_id: impl Into<String>,
expected: impl Into<String>,
) -> Self
pub fn invalid_variable_with_context( message: impl Into<String>, variable_id: impl Into<String>, expected: impl Into<String>, ) -> Self
Create an InvalidVariable error with full context
Sourcepub fn internal_error(message: impl Into<String>) -> Self
pub fn internal_error(message: impl Into<String>) -> Self
Create an InternalError with location context (typically called with file!() and line!())
Trait Implementations§
Source§impl Clone for SolverError
impl Clone for SolverError
Source§fn clone(&self) -> SolverError
fn clone(&self) -> SolverError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more