Implement Error for EmitError

Fixes #50.
This commit is contained in:
David Tolnay 2017-05-08 11:43:42 -07:00
parent 37dc15badb
commit 45eae6fd07

View file

@ -1,5 +1,6 @@
use std::fmt; use std::fmt::{self, Display};
use std::convert::From; use std::convert::From;
use std::error::Error;
use yaml::{Hash, Yaml}; use yaml::{Hash, Yaml};
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
@ -8,6 +9,24 @@ pub enum EmitError {
BadHashmapKey, BadHashmapKey,
} }
impl Error for EmitError {
fn description(&self) -> &str {
match *self {
EmitError::FmtError(ref err) => err.description(),
EmitError::BadHashmapKey => "bad hashmap key",
}
}
}
impl Display for EmitError {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
match *self {
EmitError::FmtError(ref err) => Display::fmt(err, formatter),
EmitError::BadHashmapKey => formatter.write_str("bad hashmap key"),
}
}
}
impl From<fmt::Error> for EmitError { impl From<fmt::Error> for EmitError {
fn from(f: fmt::Error) -> Self { fn from(f: fmt::Error) -> Self {
EmitError::FmtError(f) EmitError::FmtError(f)