///|
/// Errors raised while serializing a structured MARC record.
pub(all) suberror SerializeError {
InvalidTag(String)
InvalidIndicator(String)
InvalidSubfieldCode(Char)
InvalidFieldValue(String)
ControlFieldTag(String)
FieldTooLong(String, Int)
DirectoryOverflow(Int)
RecordTooLong(Int)
} derive(Eq, Debug)
///|
pub impl Show for SerializeError with fn output(self, logger) {
logger.write_string(self.to_string())
}
///|
pub fn SerializeError::to_string(self : SerializeError) -> String {
match self {
InvalidTag(tag) => "invalid MARC tag: \{tag}"
InvalidIndicator(tag) => "invalid indicator in field \{tag}"
InvalidSubfieldCode(code) => "invalid subfield code: \{code}"
InvalidFieldValue(tag) => "field \{tag} contains an ISO 2709 delimiter byte"
ControlFieldTag(tag) => "control field uses a non-control tag: \{tag}"
FieldTooLong(tag, length) =>
"field \{tag} is too long for a four-digit directory length: \{length}"
DirectoryOverflow(length) =>
"directory offset exceeds five digits: \{length}"
RecordTooLong(length) =>
"record is too long for the five-digit MARC leader length: \{length}"
}
}