serde_nested_json/
ser.rs

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}