persistence_agent/
error.rs1use 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 {}