serde_hzdata/de/
value_seq_access.rs1use serde::de;
2
3use crate::{Error, HzdataValue};
4
5pub struct HzdataValueSeqAccess {
6 values: Vec<HzdataValue>,
7}
8
9impl HzdataValueSeqAccess {
10 pub(super) fn new(values: Vec<HzdataValue>) -> Self {
11 HzdataValueSeqAccess { values }
12 }
13}
14
15impl<'de> de::SeqAccess<'de> for HzdataValueSeqAccess {
16 type Error = Error<'de>;
17
18 fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
19 where
20 T: de::DeserializeSeed<'de>,
21 {
22 if self.values.is_empty() {
23 return Ok(None);
24 }
25
26 let value = self.values.remove(0);
27
28 seed.deserialize(value).map(Some)
29 }
30}