serde_hzdata/de/
value_seq_access.rs

1use 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}