Trait vlqencoding::VLQDecode
source · Required Methods§
sourcefn read_vlq(&mut self) -> Result<T>
fn read_vlq(&mut self) -> Result<T>
Read a VLQ byte array from stream and decode it to an integer.
Examples
use vlqencoding::VLQDecode;
use std::io::{Cursor,Seek,SeekFrom,ErrorKind};
let mut c = Cursor::new(vec![120u8, 211, 171, 202, 220, 84]);
let x: Result<u8, _> = c.read_vlq();
assert_eq!(x.unwrap(), 120u8);
let x: Result<u16, _> = c.read_vlq();
assert_eq!(x.unwrap_err().kind(), ErrorKind::InvalidData);
c.seek(SeekFrom::Start(1)).expect("seek should work");
let x: Result<u64, _> = c.read_vlq();
assert_eq!(x.unwrap(), 22742734291u64);
Signed integers are decoded via zig-zag:
use vlqencoding::VLQDecode;
use std::io::{Cursor,Seek,SeekFrom,ErrorKind};
let mut c = Cursor::new(vec![5u8, 208, 15]);
let x: Result<i8, _> = c.read_vlq();
assert_eq!(x.unwrap(), -3i8);
let x: Result<i8, _> = c.read_vlq();
assert_eq!(x.unwrap_err().kind(), ErrorKind::InvalidData);
c.seek(SeekFrom::Start(1)).expect("seek should work");
let x: Result<i32, _> = c.read_vlq();
assert_eq!(x.unwrap(), 1000i32);