use std::fmt;
#[derive(Debug, Clone, PartialEq)]
pub enum GradientError {
EmptyInput,
LengthMismatch {
scores_len: usize,
relevance_len: usize,
},
InvalidParameter(String),
InvalidRelevance(String),
InvalidNDCG { k: usize, length: usize },
}
impl fmt::Display for GradientError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
GradientError::EmptyInput => write!(f, "Input is empty"),
GradientError::LengthMismatch {
scores_len,
relevance_len,
} => {
write!(
f,
"Length mismatch: scores has {} elements, relevance has {}",
scores_len, relevance_len
)
}
GradientError::InvalidParameter(msg) => write!(f, "Invalid parameter: {}", msg),
GradientError::InvalidRelevance(msg) => write!(f, "Invalid relevance: {}", msg),
GradientError::InvalidNDCG { k, length } => {
write!(f, "Invalid NDCG@k: k={} but length={}", k, length)
}
}
}
}
impl std::error::Error for GradientError {}