[][src]Crate nano_leb128

nano-leb128

Little endian base 128 variable-length code compression.

Usage

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);

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.

Structs

SLEB128

A value that can be (de)serialized using signed LEB128 variable length compression.

ULEB128

A value that can be (de)serialized using unsigned LEB128 variable length compression.

Enums

LEB128DecodeError

Errors that can occur when decoding LEB128 compressed values.

LEB128EncodeError

Errors that can occur when encoding values using LEB128 compression.