embedded-msgpack 0.4.1

MessagePack serialization implementation for Rust optimized for embedded/no_std environments
Documentation
use serde::de;

use super::{print_debug, Deserializer, Error};

pub(crate) struct SeqAccess<'a, 'b> {
    de: &'a mut Deserializer<'b>,
    count: usize,
}

impl<'a, 'b> SeqAccess<'a, 'b> {
    pub fn new(de: &'a mut Deserializer<'b>, count: usize) -> Self { SeqAccess { de, count } }
}

impl<'a, 'de> de::SeqAccess<'de> for SeqAccess<'a, 'de> {
    type Error = Error;

    fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Error>
    where T: de::DeserializeSeed<'de> {
        print_debug::<T>("SeqAccess::", "next_element_seed", &self.de);
        if self.count > 0 {
            self.count -= 1;
            Ok(Some(seed.deserialize(&mut *self.de)?))
        } else {
            Ok(None)
        }
    }
}