1use super::NestedJson;
2use serde::{Serialize, Serializer};
3
4pub fn nest<S: Serializer, T: Serialize>(field: &T, s: S) -> Result<S::Ok, S::Error> {
5 NestedJson(field).serialize(s)
6}
7
8pub fn nest_iter<'a, S: Serializer, T: Serialize>(field: &'a T, s: S) -> Result<S::Ok, S::Error>
9where
10 &'a T: IntoIterator,
11 <&'a T as IntoIterator>::Item: Serialize,
12{
13 field
14 .into_iter()
15 .map(|i| serde_json::to_string(&i))
16 .collect::<Result<Vec<_>, _>>()
17 .map_err(serde::ser::Error::custom)?
18 .serialize(s)
19}
20
21impl<T: Serialize> Serialize for NestedJson<T> {
22 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
23 where
24 S: serde::Serializer,
25 {
26 serializer
27 .serialize_str(&serde_json::to_string(&self.0).map_err(serde::ser::Error::custom)?)
28 }
29}