Skip to main content

quantrs2_tytan/sampler/
errors.rs

1//! Error types for samplers
2
3use quantrs2_anneal::{AnnealingError, IsingError};
4use thiserror::Error;
5
6/// Errors that can occur during sampling
7#[derive(Error, Debug)]
8#[non_exhaustive]
9pub enum SamplerError {
10    /// Error when the input parameters are invalid
11    #[error("Invalid parameter: {0}")]
12    InvalidParameter(String),
13
14    /// Error in the underlying annealing simulator
15    #[error("Annealing error: {0}")]
16    AnnealingError(#[from] AnnealingError),
17
18    /// Error in the Ising model
19    #[error("Ising model error: {0}")]
20    IsingError(#[from] IsingError),
21
22    /// Error in GPU operations
23    #[error("GPU error: {0}")]
24    GpuError(String),
25
26    /// Error when D-Wave API is unavailable
27    #[error("D-Wave API unavailable: {0}")]
28    DWaveUnavailable(String),
29
30    /// Error during API communication
31    #[error("API communication error: {0}")]
32    ApiError(String),
33
34    /// Error in D-Wave operations
35    #[cfg(feature = "dwave")]
36    #[error("D-Wave error: {0}")]
37    DWaveError(#[from] quantrs2_anneal::dwave::DWaveError),
38
39    /// Feature not implemented
40    #[error("Not implemented: {0}")]
41    NotImplemented(String),
42
43    /// Invalid model error
44    #[error("Invalid model: {0}")]
45    InvalidModel(String),
46
47    /// Unsupported operation error
48    #[error("Unsupported operation: {0}")]
49    UnsupportedOperation(String),
50}
51
52impl From<String> for SamplerError {
53    fn from(s: String) -> Self {
54        Self::InvalidParameter(s)
55    }
56}
57
58/// Result type for sampling operations
59pub type SamplerResult<T> = Result<T, SamplerError>;