use std::fmt;
#[derive(Debug)]
pub enum NomParserError {
Utf8Error,
Date,
Location,
SequenceLength,
Unknown,
}
impl From<NomParserError> for u32 {
fn from(i: NomParserError) -> u32 {
i as u32
}
}
impl From<u32> for NomParserError {
fn from(i: u32) -> NomParserError {
match i {
0 => NomParserError::Utf8Error,
1 => NomParserError::Date,
2 => NomParserError::Location,
3 => NomParserError::SequenceLength,
_ => NomParserError::Unknown,
}
}
}
impl fmt::Display for NomParserError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let msg = match *self {
NomParserError::Utf8Error => "Invalid UTF-8 encountered",
NomParserError::Date => "Invalid date format",
NomParserError::Location => "Failed parsing location specifier",
NomParserError::SequenceLength => {
"Sequence length didn't match value specified by LOCUS line"
}
NomParserError::Unknown => "Unknown parse error", };
write!(f, "{}", msg)
}
}