cgp_serde/providers/
iterator.rs1use cgp::prelude::*;
2use serde::ser::SerializeSeq;
3
4use crate::components::{CanSerializeValue, ValueSerializer, ValueSerializerComponent};
5use crate::types::SerializeWithContext;
6
7#[cgp_impl(new SerializeIterator)]
8impl<Value> ValueSerializer<Value>
9where
10 for<'a> &'a Value: IntoIterator,
11 Self: for<'a> CanSerializeValue<<&'a Value as IntoIterator>::Item>,
12{
13 fn serialize<S>(&self, value: &Value, serializer: S) -> Result<S::Ok, S::Error>
14 where
15 S: serde::Serializer,
16 {
17 let items = value.into_iter();
18 let mut serializer = serializer.serialize_seq(None)?;
19 for item in items {
20 serializer.serialize_element(&SerializeWithContext {
21 context: self,
22 value: &item,
23 })?
24 }
25
26 serializer.end()
27 }
28}