From 954c3234a0c871856908ab0cabaf1b8ccbba9cbc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adolfo=20Ochagav=C3=ADa?= Date: Sat, 28 Jun 2014 15:39:49 +0200 Subject: [PATCH] Implement FromStr for Json --- src/libserialize/json.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index 77dc73b4f66..1f376da5270 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -2166,6 +2166,12 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { } } +impl std::from_str::FromStr for Json { + fn from_str(s: &str) -> Option { + from_str(s).ok() + } +} + #[cfg(test)] mod tests { extern crate test; @@ -2180,9 +2186,7 @@ mod tests { InvalidSyntax, InvalidNumber, EOFWhileParsingObject, EOFWhileParsingList, EOFWhileParsingValue, EOFWhileParsingString, KeyMustBeAString, ExpectedColon, TrailingCharacters}; - use std::f32; - use std::f64; - use std::io; + use std::{f32, f64, io}; use std::collections::TreeMap; #[deriving(PartialEq, Encodable, Decodable, Show)] @@ -2215,6 +2219,12 @@ fn mk_object(items: &[(String, Json)]) -> Json { Object(d) } + #[test] + fn test_from_str_trait() { + let s = "null"; + assert!(::std::from_str::from_str::(s).unwrap() == from_str(s).unwrap()); + } + #[test] fn test_write_null() { assert_eq!(Null.to_str().into_string(), "null".to_string()); -- 2.44.0