persistence-agent 0.1.0

Persistent homology for agent behavior profiling — topological fingerprints
Documentation
use std::fmt;

#[derive(Debug)]
pub enum PersistenceError {
    EmptyCloud,
    DimensionMismatch { expected: usize, actual: usize },
    InvalidK { k: usize, n: usize },
    EmptyFiltration,
    MatrixSizeMismatch { expected: usize, actual: usize },
}

impl fmt::Display for PersistenceError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            PersistenceError::EmptyCloud => write!(f, "empty point cloud — at least one point required"),
            PersistenceError::DimensionMismatch { expected, actual } => {
                write!(f, "dimension mismatch: expected {expected}, got {actual}")
            }
            PersistenceError::InvalidK { k, n } => {
                write!(f, "invalid k for k-NN: k={k} but only {n} points")
            }
            PersistenceError::EmptyFiltration => write!(f, "filtration produced no simplices"),
            PersistenceError::MatrixSizeMismatch { expected, actual } => {
                write!(f, "boundary matrix size mismatch: expected {expected}×{expected}, got {actual}")
            }
        }
    }
}

impl std::error::Error for PersistenceError {}