cadmpeg_core/
iter_wire.rs1use serde::ser::SerializeSeq;
5use serde::Serialize;
6
7pub struct IterWire<I>(pub I);
9
10impl<I> Serialize for IterWire<I>
11where
12 I: Iterator + Clone,
13 I::Item: Serialize,
14{
15 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16 let values = self.0.clone();
17 let (lower, upper) = values.size_hint();
18 let mut sequence = serializer.serialize_seq((upper == Some(lower)).then_some(lower))?;
19 for value in values {
20 sequence.serialize_element(&value)?;
21 }
22 sequence.end()
23 }
24}