1use std::time::Duration;
2
3use thiserror::Error;
4
5#[derive(Debug, Error, Clone, PartialEq)]
6pub enum LocyError {
7 #[error("max iterations ({max}) exceeded for stratum {stratum_id} (rules: {rules})")]
8 MaxIterationsExceeded {
9 max: usize,
10 stratum_id: usize,
11 rules: String,
12 },
13
14 #[error("evaluation timeout: {elapsed:?} exceeded limit of {limit:?}")]
15 Timeout { elapsed: Duration, limit: Duration },
16
17 #[error("MSUM negative value in rule '{rule}', fold '{fold}': {value}")]
18 MsumNegativeValue {
19 rule: String,
20 fold: String,
21 value: f64,
22 },
23
24 #[error("executor error: {message}")]
25 ExecutorError { message: String },
26
27 #[error("evaluation error: {message}")]
28 EvaluationError { message: String },
29
30 #[error("type error: {message}")]
31 TypeError { message: String },
32
33 #[error("savepoint failed: {message}")]
34 SavepointFailed { message: String },
35
36 #[error("query resolution error: {message}")]
37 QueryResolutionError { message: String },
38
39 #[error("abduction error: {message}")]
40 AbductionError { message: String },
41}