Skip to main content

ruqu_core/
error.rs

1//! Error types for the ruQu quantum simulation engine
2
3use crate::types::QubitIndex;
4use thiserror::Error;
5
6/// Errors that can occur during quantum simulation
7#[derive(Error, Debug)]
8pub enum QuantumError {
9    #[error("qubit limit exceeded: requested {requested}, maximum {maximum}")]
10    QubitLimitExceeded { requested: u32, maximum: u32 },
11
12    #[error("invalid qubit index {index} for {num_qubits}-qubit system")]
13    InvalidQubitIndex {
14        index: QubitIndex,
15        num_qubits: u32,
16    },
17
18    #[error("memory allocation failed: need {required_bytes} bytes")]
19    MemoryAllocationFailed { required_bytes: usize },
20
21    #[error("invalid state vector: length {length} does not match 2^{num_qubits}")]
22    InvalidStateVector { length: usize, num_qubits: u32 },
23
24    #[error("circuit error: {0}")]
25    CircuitError(String),
26}
27
28/// Convenience alias used throughout the crate
29pub type Result<T> = std::result::Result<T, QuantumError>;