1use crate::types::QubitIndex;
4use thiserror::Error;
5
6#[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
28pub type Result<T> = std::result::Result<T, QuantumError>;