Crates.io | nano-leb128 |
lib.rs | nano-leb128 |
version | 0.1.0 |
source | src |
created_at | 2019-07-07 11:45:08.872637 |
updated_at | 2019-07-07 11:45:08.872637 |
description | Little endian base 128 variable-length code compression |
homepage | https://github.com/rjsberry/nano |
repository | |
max_upload_size | |
id | 147279 |
size | 31,061 |
Signed LEB128 compression/decompression:
use nano_leb128::SLEB128;
fn rand_i64() -> i64 {
// ...
}
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 {
// ...
}
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);
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.
This project is dual-licensed under either of
at your option.