]> git.lizzy.rs Git - rust.git/commitdiff
Implement FromStr for Json
authorAdolfo Ochagavía <aochagavia92@gmail.com>
Sat, 28 Jun 2014 13:39:49 +0000 (15:39 +0200)
committerAdolfo Ochagavía <aochagavia92@gmail.com>
Mon, 30 Jun 2014 19:35:47 +0000 (21:35 +0200)
src/libserialize/json.rs

index 77dc73b4f66eda73fd7dfb096597382689479615..1f376da52702d84f2767bebc0da65f264edb9d03 100644 (file)
@@ -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<Json> {
+        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::<Json>(s).unwrap() == from_str(s).unwrap());
+    }
+
     #[test]
     fn test_write_null() {
         assert_eq!(Null.to_str().into_string(), "null".to_string());