Skip to main content

skm_learn/
error.rs

1//! Error types for skm-learn.
2
3use thiserror::Error;
4
5/// Errors from learning operations.
6#[derive(Debug, Error)]
7pub enum LearnError {
8    /// Test harness error.
9    #[error("Test harness error: {0}")]
10    Harness(String),
11
12    /// Metrics error.
13    #[error("Metrics error: {0}")]
14    Metrics(String),
15
16    /// Optimizer error.
17    #[error("Optimizer error: {0}")]
18    Optimizer(String),
19
20    /// Analytics error.
21    #[error("Analytics error: {0}")]
22    Analytics(String),
23
24    /// Core error.
25    #[error("Core error: {0}")]
26    Core(#[from] skm_core::CoreError),
27
28    /// Select error.
29    #[error("Selection error: {0}")]
30    Select(#[from] skm_select::SelectError),
31
32    /// IO error.
33    #[error("IO error: {0}")]
34    Io(#[from] std::io::Error),
35
36    /// YAML error.
37    #[error("YAML error: {0}")]
38    Yaml(#[from] serde_yaml::Error),
39
40    /// JSON error.
41    #[error("JSON error: {0}")]
42    Json(#[from] serde_json::Error),
43
44    /// SQLite error.
45    #[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}