Skip to main content

persistence_agent/
error.rs

1use std::fmt;
2
3#[derive(Debug)]
4pub enum PersistenceError {
5    EmptyCloud,
6    DimensionMismatch { expected: usize, actual: usize },
7    InvalidK { k: usize, n: usize },
8    EmptyFiltration,
9    MatrixSizeMismatch { expected: usize, actual: usize },
10}
11
12impl fmt::Display for PersistenceError {
13    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14        match self {
15            PersistenceError::EmptyCloud => write!(f, "empty point cloud — at least one point required"),
16            PersistenceError::DimensionMismatch { expected, actual } => {
17                write!(f, "dimension mismatch: expected {expected}, got {actual}")
18            }
19            PersistenceError::InvalidK { k, n } => {
20                write!(f, "invalid k for k-NN: k={k} but only {n} points")
21            }
22            PersistenceError::EmptyFiltration => write!(f, "filtration produced no simplices"),
23            PersistenceError::MatrixSizeMismatch { expected, actual } => {
24                write!(f, "boundary matrix size mismatch: expected {expected}×{expected}, got {actual}")
25            }
26        }
27    }
28}
29
30impl std::error::Error for PersistenceError {}