use thiserror::Error;
#[derive(Debug, Error)]
pub enum LearnError {
#[error("Test harness error: {0}")]
Harness(String),
#[error("Metrics error: {0}")]
Metrics(String),
#[error("Optimizer error: {0}")]
Optimizer(String),
#[error("Analytics error: {0}")]
Analytics(String),
#[error("Core error: {0}")]
Core(#[from] skm_core::CoreError),
#[error("Selection error: {0}")]
Select(#[from] skm_select::SelectError),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("YAML error: {0}")]
Yaml(#[from] serde_yaml::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[cfg(feature = "analytics-sqlite")]
#[error("SQLite error: {0}")]
Sqlite(#[from] rusqlite::Error),
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_error_display() {
let err = LearnError::Harness("test failed".into());
assert!(err.to_string().contains("test failed"));
}
}