From 044825829abcb8a1a82162c167da9db21deed466 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Tue, 10 Feb 2015 07:50:43 -0800 Subject: [PATCH] Update to rust HEAD --- serde2/benches/bench_log.rs | 13 +++++++++++++ serde2/src/json/error.rs | 11 ++++++++++- serde2/src/json/value.rs | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/serde2/benches/bench_log.rs b/serde2/benches/bench_log.rs index 4edb6c9b..ecd10a51 100644 --- a/serde2/benches/bench_log.rs +++ b/serde2/benches/bench_log.rs @@ -1468,6 +1468,19 @@ fn bench_manual_serialize_my_mem_writer1_escape(b: &mut Bencher) { }); } +#[bench] +fn bench_decoder(b: &mut Bencher) { + use rustc_serialize::json::Json; + + b.bytes = JSON_STR.len() as u64; + + b.iter(|| { + let json = Json::from_str(JSON_STR).unwrap(); + let mut decoder = rustc_serialize::json::Decoder::new(json); + let _log: Log = rustc_serialize::Decodable::decode(&mut decoder).unwrap(); + }); +} + #[bench] fn bench_deserializer(b: &mut Bencher) { b.bytes = JSON_STR.len() as u64; diff --git a/serde2/src/json/error.rs b/serde2/src/json/error.rs index 0c2cb32e..1163e096 100644 --- a/serde2/src/json/error.rs +++ b/serde2/src/json/error.rs @@ -39,6 +39,8 @@ pub enum ErrorCode { impl fmt::Debug for ErrorCode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use std::fmt::Debug; + match *self { //ErrorCode::ConversionError(ref token) => write!(f, "failed to convert {}", token), ErrorCode::EOFWhileParsingList => "EOF While parsing list".fmt(f), @@ -91,7 +93,7 @@ impl error::Error for Error { fn description(&self) -> &str { match *self { Error::SyntaxError(..) => "syntax error", - Error::IoError(_) => "input/output error", + Error::IoError(ref error) => error.description().as_slice(), /* Error::ExpectedError(ref expected, _) => &expected, Error::MissingFieldError(_) => "missing field", @@ -100,6 +102,13 @@ impl error::Error for Error { } } + fn cause(&self) -> Option<&error::Error> { + match *self { + Error::IoError(ref error) => Some(error), + _ => None, + } + } + } impl fmt::Display for Error { diff --git a/serde2/src/json/value.rs b/serde2/src/json/value.rs index c620c3b0..c5943a76 100644 --- a/serde2/src/json/value.rs +++ b/serde2/src/json/value.rs @@ -67,7 +67,7 @@ impl fmt::Debug for Value { pub fn to_value(value: &T) -> Value where T: ser::Serialize { let mut writer = Writer::new(); - writer.visit(value).unwrap(); + writer.visit(value).ok().unwrap(); writer.unwrap() }