1use quantrs2_core::error::QuantRS2Error;
2use std::io;
3use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, MLError>;
7
8#[derive(Error, Debug)]
10#[non_exhaustive]
11pub enum MLError {
12 #[error("Machine learning error: {0}")]
14 MLOperationError(String),
15
16 #[error("Model creation error: {0}")]
18 ModelCreationError(String),
19
20 #[error("Optimization error: {0}")]
22 OptimizationError(String),
23
24 #[error("Data error: {0}")]
26 DataError(String),
27
28 #[error("Circuit execution error: {0}")]
30 CircuitExecutionError(String),
31
32 #[error("Feature extraction error: {0}")]
34 FeatureExtractionError(String),
35
36 #[error("Invalid parameter: {0}")]
38 InvalidParameter(String),
39
40 #[error("Invalid input: {0}")]
42 InvalidInput(String),
43
44 #[error("Invalid configuration: {0}")]
46 InvalidConfiguration(String),
47
48 #[error("Configuration error: {0}")]
50 ConfigurationError(String),
51
52 #[error("Dimension mismatch: {0}")]
54 DimensionMismatch(String),
55
56 #[error("Not implemented: {0}")]
58 NotImplemented(String),
59
60 #[error("Not supported: {0}")]
62 NotSupported(String),
63
64 #[error("Validation error: {0}")]
66 ValidationError(String),
67
68 #[error("Model not trained: {0}")]
70 ModelNotTrained(String),
71
72 #[error("Computation error: {0}")]
74 ComputationError(String),
75
76 #[error("I/O error: {0}")]
78 IOError(#[from] io::Error),
79
80 #[error("Quantum error: {0}")]
82 QuantumError(#[from] QuantRS2Error),
83
84 #[error("Shape error: {0}")]
86 ShapeError(#[from] scirs2_core::ndarray::ShapeError),
87
88 #[error("JSON error: {0}")]
90 JsonError(#[from] serde_json::Error),
91
92 #[error("Numerical error: {0}")]
94 NumericalError(String),
95
96 #[error("Backend error: {0}")]
98 BackendError(String),
99}
100
101impl From<String> for MLError {
102 fn from(s: String) -> Self {
103 MLError::ComputationError(s)
104 }
105}