From 0c4b4dfc8ae8e6d32d3721567b6f26cc2e49cd5f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 2 Dec 2020 18:14:42 +0300 Subject: [PATCH] Allow collecting an iterator of pairs into JSON object --- src/value/from.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/value/from.rs b/src/value/from.rs index 93d36541d..4423a02fb 100644 --- a/src/value/from.rs +++ b/src/value/from.rs @@ -215,6 +215,22 @@ impl> FromIterator for Value { } } +impl, V: Into> 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>(iter: I) -> Self { + Value::Object(iter.into_iter().map(|(k, v)| (k.into(), v.into())).collect()) + } +} + impl From<()> for Value { /// Convert `()` to `Value` ///