1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum LearnError {
8 #[error("Test harness error: {0}")]
10 Harness(String),
11
12 #[error("Metrics error: {0}")]
14 Metrics(String),
15
16 #[error("Optimizer error: {0}")]
18 Optimizer(String),
19
20 #[error("Analytics error: {0}")]
22 Analytics(String),
23
24 #[error("Core error: {0}")]
26 Core(#[from] skm_core::CoreError),
27
28 #[error("Selection error: {0}")]
30 Select(#[from] skm_select::SelectError),
31
32 #[error("IO error: {0}")]
34 Io(#[from] std::io::Error),
35
36 #[error("YAML error: {0}")]
38 Yaml(#[from] serde_yaml::Error),
39
40 #[error("JSON error: {0}")]
42 Json(#[from] serde_json::Error),
43
44 #[cfg(feature = "analytics-sqlite")]
46 #[error("SQLite error: {0}")]
47 Sqlite(#[from] rusqlite::Error),
48}
49
50#[cfg(test)]
51mod tests {
52 use super::*;
53
54 #[test]
55 fn test_error_display() {
56 let err = LearnError::Harness("test failed".into());
57 assert!(err.to_string().contains("test failed"));
58 }
59}