pub type Result<T> = std::result::Result<T, FitsError>;
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[non_exhaustive]
pub enum FitsError {
#[error("keyword '{keyword}' occurs {count} times; select an occurrence")]
AmbiguousKeyword {
keyword: String,
count: usize,
},
#[error("keyword '{keyword}' exceeds 8 characters")]
KeywordTooLong {
keyword: String,
},
#[error("keyword '{keyword}' contains characters outside A-Z 0-9 - _")]
InvalidKeyword {
keyword: String,
},
#[error("keyword '{keyword}' has no occurrence {occurrence} (found {count})")]
OccurrenceOutOfRange {
keyword: String,
occurrence: usize,
count: usize,
},
#[error("no END card found in header")]
MissingEnd,
#[error("header ends before its 2880-byte block is complete (truncated file)")]
TruncatedHeader,
#[error("I/O error: {0}")]
Io(String),
}
impl From<std::io::Error> for FitsError {
fn from(e: std::io::Error) -> Self {
FitsError::Io(e.to_string())
}
}