Crate vu64

Source
Expand description

The variable length integer encoding of u64. This is a simple and fast encoder/decoder.

§Features

  • integer value length compaction
  • minimum support rustc 1.58.1 (db9d1b20b 2022-01-20)

§format pattern

PrefixPrecisionTotal Bytes
0xxxxxxx7 bits1 byte
10xxxxxx14 bits2 bytes
110xxxxx21 bits3 bytes
1110xxxx28 bits4 bytes
11110xxx35 bits5 bytes
111110xx42 bits6 bytes
1111110x49 bits7 bytes
1111111056 bits8 bytes
1111111164 bits9 bytes

This format is a like vint64, but 0x00 is represented by 0x00.

§Examples

§Encode

use vu64::encode;
assert_eq!(encode(0x0f0f).as_ref(), &[0x8F, 0x3c]);

§Decode

use vu64::decode;
let slice = [0x8F, 0x3c].as_ref();
assert_eq!(decode(slice).unwrap(), 0x0f0f);

§Encode and decode

use vu64::{encode, decode};
let val = 1234;
assert_eq!(decode(encode(val).as_ref()).unwrap(), val);

§Read from buffer and decode

use vu64::io::ReadVu64;
let vec: Vec<u8> = vec![0xFF, 0xf0, 0xf0, 0x0f, 0x0f, 0xf0, 0xf0, 0x0f, 0x0f];
let mut crsr = std::io::Cursor::new(vec);
let r = crsr.read_and_decode_vu64();
assert!(r.is_ok());
assert_eq!(r.unwrap(), 0x0f0f_f0f0_0f0f_f0f0);

§Encode and write to buffer

use vu64::io::WriteVu64;
let vec_0: Vec<u8> = vec![0xFF, 0xf0, 0xf0, 0x0f, 0x0f, 0xf0, 0xf0, 0x0f, 0x0f];
let vec: Vec<u8> = Vec::new();
let mut crsr = std::io::Cursor::new(vec);
let r = crsr.encode_and_write_vu64(0x0f0f_f0f0_0f0f_f0f0);
assert!(r.is_ok());
assert_eq!(crsr.get_ref().as_slice(), vec_0.as_slice());

Modules§

io
Supports of std::io.
signed
Supports of encoding signed integers as Vu64.

Structs§

Vu64
vu64: serialized variable-length 64-bit integers.

Enums§

Error
Error type

Constants§

MAX_BYTES
Maximum length of a vu64 in bytes
MAX_LEN1
Maximun integer whose length of vu64 is 1 byte.
MAX_LEN2
Maximun integer whose length of vu64 is 2 byte.
MAX_LEN3
Maximun integer whose length of vu64 is 3 byte.
MAX_LEN4
Maximun integer whose length of vu64 is 4 byte.
MAX_LEN5
Maximun integer whose length of vu64 is 5 byte.
MAX_LEN6
Maximun integer whose length of vu64 is 6 byte.
MAX_LEN7
Maximun integer whose length of vu64 is 7 byte.
MAX_LEN8
Maximun integer whose length of vu64 is 8 byte.
MAX_LEN9
Maximun integer whose length of vu64 is 9 byte.

Functions§

check_result_with_length
decode
Decode vu64-encoded bytes to unsigned 64-bit integer.
decode2
Decode vu64-encoded bytes to unsigned 64-bit integer.
decode3
Decode vu64-encoded bytes to unsigned 64-bit integer.
decode_with_first_and_follow
decode_with_first_and_follow_le
decode_with_length
decoded_len
Get the length of a vu64 from the first byte.
encode
Encode an unsigned 64-bit integer as vu64.
encoded_len
Get the length of an encoded vu64 for the given value in bytes.