1use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum PaCMAPError {
7 #[error("Dataset too small: need at least 2 points, got {n}")]
8 DatasetTooSmall { n: usize },
9
10 #[error("Dimension mismatch: data slice length {len} is not divisible by d={d}")]
11 DimensionMismatch { len: usize, d: usize },
12
13 #[error("n={n} exceeds u32::MAX — indices would overflow pair storage")]
14 DatasetTooLarge { n: usize },
15
16 #[error("Pair count overflow: n={n} × k={k} would overflow usize")]
17 PairCountOverflow { n: usize, k: usize },
18
19 #[error(
20 "Insufficient memory: embedding requires ~{required_bytes} bytes but only \
21 {available_bytes} bytes are available"
22 )]
23 InsufficientMemory {
24 required_bytes: usize,
25 available_bytes: usize,
26 },
27
28 #[error("KNN method not implemented: {method}")]
29 MethodNotImplemented { method: String },
30
31 #[error("KNN index error: {0}")]
32 KnnIndex(String),
33
34 #[error("PCA failed: {0}")]
35 Pca(String),
36
37 #[error("Run cancelled by caller")]
38 Cancelled,
39}