pub const fn sequence_decoder<V>(buf: &[u8]) -> SequenceDecoder<'_, V> ⓘwhere
V: ?Sized,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, encoded_sequence_len, encode_sequence, sequence_decoder};
let values = (0..1024u64).collect::<Vec<_>>();
let encoded_len = encoded_sequence_len(values.iter());
let mut buf = vec![0; encoded_len];
let bytes_written = encode_sequence(values.iter(), &mut buf).unwrap();
assert_eq!(bytes_written, encoded_len);
let mut readed = 0;
let mut decoded = Vec::new();
let mut decoder = sequence_decoder::<u64>(&buf[readed..]);
// `SequenceDecoder` is copy
let mut decoder1 = decoder;
while let Some(Ok((bytes_read, value))) = decoder.next() {
readed += bytes_read.get();
assert_eq!(readed, decoder.position());
decoded.push(value);
}
assert_eq!(decoder1.position(), 0);
assert_eq!(decoded, values);
assert_eq!(readed, buf.len());