1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum TurboQuantError {
5 #[error("dimension mismatch: expected {expected}, got {got}")]
6 DimensionMismatch { expected: usize, got: usize },
7
8 #[error("dimension must be even for polar encoding, got {got}")]
9 OddDimension { got: usize },
10
11 #[error("dimension must be non-zero")]
12 ZeroDimension,
13
14 #[error("bits must be between 1 and 16, got {got}")]
15 InvalidBitWidth { got: u8 },
16
17 #[error("projection count must be non-zero")]
18 ZeroProjectionCount,
19
20 #[error("rotation matrix generation failed: {reason}")]
21 RotationFailed { reason: String },
22
23 #[error("polar code is malformed: {reason}")]
24 MalformedCode { reason: String },
25}
26
27pub type Result<T> = std::result::Result<T, TurboQuantError>;