pub const fn map_decoder<K, V>(buf: &[u8]) -> MapDecoder<'_, K, V> ⓘExpand description
Returns a sequence decoder for the given buffer.
The returned decoder is an iterator that yields Result<(usize, Self), ConstDecodeError>.
§Example
use varing::{Varint, decode_map, encoded_map_len, encode_map, map_decoder};
use std::collections::HashMap;
let values = (0..1024u64).map(|v| (v, v)).collect::<HashMap<_, _>>();
let encoded_len = encoded_map_len(values.iter());
let mut buf = vec![0; encoded_len];
let bytes_written = encode_map(values.iter(), &mut buf).unwrap();
assert_eq!(bytes_written, encoded_len);
let mut readed = 0;
let mut decoded = HashMap::new();
let mut decoder = map_decoder::<u64, u64>(&buf[readed..]);
// `MapDecoder` is copy
let mut decoder1 = decoder;
while let Some(Ok((bytes_read, (key, value)))) = decoder.next() {
readed += bytes_read.get();
assert_eq!(readed, decoder.position());
decoded.insert(key, value);
}
assert_eq!(decoder1.position(), 0);
assert_eq!(decoded, values);
assert_eq!(readed, buf.len());