]> git.proxmox.com Git - cargo.git/blobdiff - vendor/serde_json/src/value/from.rs
New upstream version 0.52.0
[cargo.git] / vendor / serde_json / src / value / from.rs
index 93d36541dec3a0d9911a11ae7e1dcbdc6fac5bb4..59e09fd8f537991ccaf7328ba2063e1c5a7e79cc 100644 (file)
@@ -136,6 +136,22 @@ impl<'a> From<Cow<'a, str>> for Value {
     }
 }
 
+impl From<Number> for Value {
+    /// Convert `Number` to `Value`
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use serde_json::{Number, Value};
+    ///
+    /// let n = Number::from(7);
+    /// let x: Value = n.into();
+    /// ```
+    fn from(f: Number) -> Self {
+        Value::Number(f)
+    }
+}
+
 impl From<Map<String, Value>> for Value {
     /// Convert map (with string keys) to `Value`
     ///
@@ -215,6 +231,26 @@ impl<T: Into<Value>> FromIterator<T> for Value {
     }
 }
 
+impl<K: Into<String>, V: Into<Value>> FromIterator<(K, V)> for Value {
+    /// Convert an iteratable type to a `Value`
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use serde_json::Value;
+    ///
+    /// let v: Vec<_> = vec![("lorem", 40), ("ipsum", 2)];
+    /// let x: Value = v.into_iter().collect();
+    /// ```
+    fn from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self {
+        Value::Object(
+            iter.into_iter()
+                .map(|(k, v)| (k.into(), v.into()))
+                .collect(),
+        )
+    }
+}
+
 impl From<()> for Value {
     /// Convert `()` to `Value`
     ///