diff options
Diffstat (limited to 'src/libserialize/json.rs')
| -rw-r--r-- | src/libserialize/json.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index 5e25c61bae9..3e976c90628 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -199,6 +199,7 @@ use self::DecoderError::*; use self::ParserState::*; use self::InternalStackElement::*; +use std::borrow::Cow; use std::collections::{HashMap, BTreeMap}; use std::io::prelude::*; use std::io; @@ -2081,9 +2082,7 @@ impl Decoder { pub fn new(json: Json) -> Decoder { Decoder { stack: vec![json] } } -} -impl Decoder { fn pop(&mut self) -> Json { self.stack.pop().unwrap() } @@ -2182,8 +2181,8 @@ impl ::Decoder for Decoder { Err(ExpectedError("single character string".to_owned(), format!("{}", s))) } - fn read_str(&mut self) -> DecodeResult<string::String> { - expect!(self.pop(), String) + fn read_str(&mut self) -> DecodeResult<Cow<str>> { + expect!(self.pop(), String).map(Cow::Owned) } fn read_enum<T, F>(&mut self, _name: &str, f: F) -> DecodeResult<T> where |
