Skip to main content

trueno/tuner/
error.rs

1//! Tuner Error Types
2//!
3//! Error types for the ML-based tuner.
4
5/// Tuner error type
6#[derive(Debug, Clone)]
7pub enum TunerError {
8    /// Invalid feature value
9    InvalidFeature(String),
10    /// Insufficient training data
11    InsufficientData(usize),
12    /// Serialization error
13    Serialization(String),
14    /// Model not found
15    ModelNotFound,
16    /// Prediction failed
17    PredictionFailed(String),
18    /// Training failed (ml-tuner feature)
19    TrainingFailed(String),
20    /// I/O error (file operations)
21    Io(String),
22    /// Invalid format (APR magic/version mismatch)
23    InvalidFormat(String),
24}
25
26impl std::fmt::Display for TunerError {
27    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
28        match self {
29            TunerError::InvalidFeature(msg) => write!(f, "Invalid feature: {}", msg),
30            TunerError::InsufficientData(n) => {
31                write!(f, "Insufficient training data: {} samples (need >= 10)", n)
32            }
33            TunerError::Serialization(msg) => write!(f, "Serialization error: {}", msg),
34            TunerError::ModelNotFound => write!(f, "Tuner model not found"),
35            TunerError::PredictionFailed(msg) => write!(f, "Prediction failed: {}", msg),
36            TunerError::TrainingFailed(msg) => write!(f, "Training failed: {}", msg),
37            TunerError::Io(msg) => write!(f, "I/O error: {}", msg),
38            TunerError::InvalidFormat(msg) => write!(f, "Invalid format: {}", msg),
39        }
40    }
41}
42
43impl std::error::Error for TunerError {}