entrenar/optim/hpo/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum HPOError {
8 #[error("Empty search space")]
9 EmptySpace,
10
11 #[error("Parameter not found: {0}")]
12 ParameterNotFound(String),
13
14 #[error("Invalid parameter value for {0}: {1}")]
15 InvalidValue(String, String),
16
17 #[error("No trials completed")]
18 NoTrials,
19
20 #[error("HPO error: {0}")]
21 Internal(String),
22}
23
24pub type Result<T> = std::result::Result<T, HPOError>;
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[test]
32 fn test_hpo_error_display() {
33 let err = HPOError::EmptySpace;
34 assert!(format!("{err}").contains("Empty search space"));
35
36 let err = HPOError::ParameterNotFound("lr".to_string());
37 assert!(format!("{err}").contains("Parameter not found"));
38 assert!(format!("{err}").contains("lr"));
39
40 let err = HPOError::InvalidValue("lr".to_string(), "invalid".to_string());
41 assert!(format!("{err}").contains("Invalid parameter value"));
42
43 let err = HPOError::NoTrials;
44 assert!(format!("{err}").contains("No trials completed"));
45
46 let err = HPOError::Internal("test error".to_string());
47 assert!(format!("{err}").contains("HPO error"));
48 }
49}