use thiserror::Error;
#[derive(Error, Debug)]
pub enum RuleEngineError {
#[error("Parse error: {message}")]
ParseError {
message: String,
},
#[error("Evaluation error: {message}")]
EvaluationError {
message: String,
},
#[error("Field not found: {field}")]
FieldNotFound {
field: String,
},
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Type mismatch: expected {expected}, got {actual}")]
TypeMismatch {
expected: String,
actual: String,
},
#[error("Invalid operator: {operator}")]
InvalidOperator {
operator: String,
},
#[error("Invalid logical operator: {operator}")]
InvalidLogicalOperator {
operator: String,
},
#[error("Regex error: {message}")]
RegexError {
message: String,
},
#[error("Action execution error: {message}")]
ActionError {
message: String,
},
#[error("Execution error: {0}")]
ExecutionError(String),
#[error("Serialization error: {message}")]
SerializationError {
message: String,
},
#[error("Plugin error: {message}")]
PluginError {
message: String,
},
#[error("Feature not enabled: {feature} - {message}")]
FeatureNotEnabled {
feature: String,
message: String,
},
#[error("Module error: {message}")]
ModuleError {
message: String,
},
}
pub type Result<T> = std::result::Result<T, RuleEngineError>;