From 6a9011d2e307cd4181941f104aa558834dc44d1e Mon Sep 17 00:00:00 2001 From: Colin Sherratt Date: Sat, 24 Jan 2015 19:27:19 -0500 Subject: [PATCH] Update to using Debug over Show. Update the Error impls. --- src/reader.rs | 10 +++++----- src/test.rs | 4 ++-- src/writer.rs | 24 +++++++++++++++++------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/reader.rs b/src/reader.rs index 4e6d76f..c9c4169 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -13,7 +13,7 @@ pub struct InvalidEncoding { detail: Option, } -impl fmt::String for InvalidEncoding { +impl fmt::Display for InvalidEncoding { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { match *self { InvalidEncoding { detail: None, desc } => @@ -43,7 +43,7 @@ pub enum DecodingError { SizeLimit } -impl fmt::String for DecodingError { +impl fmt::Display for DecodingError { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { match *self { DecodingError::IoError(ref ioerr) => @@ -71,10 +71,10 @@ impl Error for DecodingError { } } - fn detail(&self) -> Option { + fn cause(&self) -> Option<&Error> { match *self { - DecodingError::IoError(ref err) => err.detail(), - DecodingError::InvalidEncoding(ref ib) => ib.detail.clone(), + DecodingError::IoError(ref err) => err.cause(), + DecodingError::InvalidEncoding(_) => None, DecodingError::SizeLimit => None } } diff --git a/src/test.rs b/src/test.rs index 9dac3f4..fb4735b 100644 --- a/src/test.rs +++ b/src/test.rs @@ -1,6 +1,6 @@ extern crate "rustc-serialize" as serialize; -use std::fmt::Show; +use std::fmt::Debug; use std::collections::HashMap; use rustc_serialize::{ @@ -20,7 +20,7 @@ use super::{ }; use super::SizeLimit::{Infinite, Bounded}; -fn the_same<'a, V>(element: V) where V: Encodable, V: Decodable, V: PartialEq, V: Show { +fn the_same<'a, V>(element: V) where V: Encodable, V: Decodable, V: PartialEq, V: Debug { assert!(element == decode(encode(&element, Infinite).unwrap().as_slice()).unwrap()); } diff --git a/src/writer.rs b/src/writer.rs index d7e1b76..340d433 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -1,6 +1,7 @@ use std::io::{Writer, IoError}; use std::error::Error; use std::num::Int; +use std::fmt; use rustc_serialize::Encoder; @@ -10,7 +11,7 @@ pub type EncodingResult = Result; /// An error that can be produced during encoding. -#[derive(Show)] +#[derive(Debug)] pub enum EncodingError { /// An error originating from the underlying `Writer`. IoError(IoError), @@ -39,6 +40,15 @@ fn wrap_io(err: IoError) -> EncodingError { EncodingError::IoError(err) } +impl fmt::Display for EncodingError { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + match *self { + EncodingError::IoError(ref err) => write!(f, "IoError: {}", err), + EncodingError::SizeLimit => write!(f, "SizeLimit") + } + } +} + impl Error for EncodingError { fn description(&self) -> &str { match *self { @@ -47,9 +57,9 @@ impl Error for EncodingError { } } - fn detail(&self) -> Option { + fn cause(&self) -> Option<&Error> { match *self { - EncodingError::IoError(ref err) => err.detail(), + EncodingError::IoError(ref err) => err.cause(), EncodingError::SizeLimit => None } } @@ -221,8 +231,8 @@ impl<'a, W: Writer> Encoder for EncoderWriter<'a, W> { try!(self.emit_usize(len)); f(self) } - fn emit_map_elt_key(&mut self, _: usize, mut f: F) -> EncodingResult<()> where - F: FnMut(&mut EncoderWriter<'a, W>) -> EncodingResult<()> { + fn emit_map_elt_key(&mut self, _: usize, f: F) -> EncodingResult<()> where + F: FnOnce(&mut EncoderWriter<'a, W>) -> EncodingResult<()> { f(self) } fn emit_map_elt_val(&mut self, _: usize, f: F) -> EncodingResult<()> where @@ -361,8 +371,8 @@ impl Encoder for SizeChecker { try!(self.emit_usize(len)); f(self) } - fn emit_map_elt_key(&mut self, _: usize, mut f: F) -> EncodingResult<()> where - F: FnMut(&mut SizeChecker) -> EncodingResult<()> { + fn emit_map_elt_key(&mut self, _: usize, f: F) -> EncodingResult<()> where + F: FnOnce(&mut SizeChecker) -> EncodingResult<()> { f(self) } fn emit_map_elt_val(&mut self, _: usize, f: F) -> EncodingResult<()> where