use thiserror::Error;
#[derive(Debug, Error)]
pub enum HullabalooError {
#[error("invalid input: {message}")]
InvalidInput { message: String },
#[error("invalid structure: {message}")]
InvalidStructure { message: String },
#[error(
"matroid ground set too large for characteristic polynomial via current algorithm (n={num_elements})"
)]
MatroidTooLarge { num_elements: usize },
#[error(
"subset rank exceeds total rank in characteristic polynomial \
(subset_rank={subset_rank}, total_rank={total_rank})"
)]
MatroidRankInconsistent {
subset_rank: usize,
total_rank: usize,
},
#[error("non-finite value: {value} ({context})")]
NonFinite { value: f64, context: &'static str },
#[error(transparent)]
Core(#[from] crate::types::Error),
}
pub type HullabalooResult<T> = std::result::Result<T, HullabalooError>;