Implement: Error, Debug, Display for ParserError
This commit is contained in:
parent
e426f384f4
commit
b6d52b2616
1 changed files with 45 additions and 0 deletions
|
@ -1,4 +1,7 @@
|
|||
use regex::Regex;
|
||||
use std::error::Error;
|
||||
use std::fmt::{Debug, Display, Formatter};
|
||||
use std::fmt;
|
||||
|
||||
use super::file::*;
|
||||
|
||||
|
@ -29,6 +32,48 @@ impl ParserError {
|
|||
}
|
||||
}
|
||||
|
||||
impl Error for ParserError {
|
||||
|
||||
fn description(&self) -> &str {
|
||||
&self.summary[..]
|
||||
}
|
||||
|
||||
fn cause(&self) -> Option<&Error> {
|
||||
None
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
impl Debug for ParserError {
|
||||
|
||||
fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
|
||||
write!(fmt, "ParserError: {}\n\n", self.summary);
|
||||
|
||||
if let Some(ref e) = self.explanation {
|
||||
write!(fmt, "{}\n\n", e);
|
||||
}
|
||||
|
||||
write!(fmt, "On position {}\nin\n{}", self.index, self.parsertext);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
impl Display for ParserError {
|
||||
|
||||
fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
|
||||
write!(fmt, "ParserError: {}", self.summary);
|
||||
|
||||
if let Some(ref e) = self.explanation {
|
||||
write!(fmt, "\n\n{}", e);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
pub trait FileHeaderParser : Sized {
|
||||
fn new(spec: &FileHeaderSpec) -> Self;
|
||||
fn read(&self, string: Option<String>) -> Result<FileHeaderData, ParserError>;
|
||||
|
|
Loading…
Reference in a new issue