From 083be1686088622b3ef75dbbd58eaaf7162eab85 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 8 May 2017 11:43:42 -0700 Subject: [PATCH] Implement Error for EmitError Fixes #50. --- parser/src/emitter.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/parser/src/emitter.rs b/parser/src/emitter.rs index 7d2ec0a..45f2024 100644 --- a/parser/src/emitter.rs +++ b/parser/src/emitter.rs @@ -1,5 +1,6 @@ -use std::fmt; +use std::fmt::{self, Display}; use std::convert::From; +use std::error::Error; use yaml::{Hash, Yaml}; #[derive(Copy, Clone, Debug)] @@ -8,6 +9,24 @@ pub enum EmitError { 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 for EmitError { fn from(f: fmt::Error) -> Self { EmitError::FmtError(f)