nano-leb128
Little endian base 128 variable-length code compression.
Usage
Signed LEB128 compression/decompression:
use nano_leb128::SLEB128;
fn rand_i64() -> i64 {
// ...
# 0
}
let mut buf = [0; 10];
let value = rand_i64();
// Compress the value into the buffer.
let len = SLEB128::from(value).write_into(&mut buf).unwrap();
// Decompress the value from the buffer.
let (decompressed, _len) = SLEB128::read_from(&buf[..len]).unwrap();
assert_eq!(i64::from(decompressed), value);
Unsigned LEB128 compression/decompression:
use nano_leb128::ULEB128;
fn rand_u64() -> u64 {
// ...
# 0
}
let mut buf = [0; 10];
let value = rand_u64();
// Compress the value into the buffer.
let len = ULEB128::from(value).write_into(&mut buf).unwrap();
// Decompress the value from the buffer.
let (decompressed, _len) = ULEB128::read_from(&buf[..len]).unwrap();
assert_eq!(u64::from(decompressed), value);
Features
std
(enabled by default)
This enables extensions that are only available with the Rust standard library.
std_io_ext
Adds methods for reading/writing LEB128 compressed values from
implementors of the traits in std::io
. This feature requires the
std
feature and will automatically enable it if it is not already
enabled.
byteio_ext
Adds methods for reading/writing LEB128 compressed values from
implementors of the traits in byteio
. This feature does not require
the std
feature.