use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum BlockError {
RankZero {
key: String,
},
RaggedAxis0 {
key: String,
expected: usize,
got: usize,
},
Validation {
message: String,
},
}
impl fmt::Display for BlockError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
BlockError::RankZero { key } => {
write!(
f,
"array for key '{}' has rank 0; expected at least 1D",
key
)
}
BlockError::RaggedAxis0 { key, expected, got } => write!(
f,
"array for key '{}' has axis-0 length {} but block expects {}",
key, got, expected
),
BlockError::Validation { message } => write!(f, "{}", message),
}
}
}
impl std::error::Error for BlockError {}
impl BlockError {
pub fn validation(message: impl Into<String>) -> Self {
BlockError::Validation {
message: message.into(),
}
}
}