pub fn decode_from_slice(slice: &[u8]) -> Result<(Vec<KVal>, usize)>
&mut &vec may not be user-friendly.