use std::fmt::{self, Display, Formatter};
use std::io;
use enums::ValidationError;
#[derive(Debug)]
pub enum Error
{
FileError(io::Error),
Missing(String),
Parse(usize, usize, String),
Validation(String, ValidationError)
}
impl Display for Error
{
fn fmt(
&self,
fmt : &mut Formatter
) -> Result<(), fmt::Error>
{
match *self
{
Error::FileError(ref err) => write!(fmt, "File Error: {}", err),
Error::Missing(ref name) => write!(fmt, "Required item {} is not defined.", name),
Error::Parse(row, col, ref error) => write!(fmt, "Error readingn file at [row {}, column {}] {}", row, col, error),
Error::Validation(ref item, ref err) => write!(fmt, "Invalid item {}: {}", item, err)
}
}
}