Build Status Rust Version 1.28+ Crate Docs

Leben is a crate for encoding or decoding integers in LEB128 format.

This is accomplished by extending the Rust native integer types with two traits: * Reader (one associated function: leb128_read) * Writer (one method: leb128_write)

Examples

Reading and writing is done on any value that implements the std::io::Read or std::io::Write, respectively. For example, we can write to std::io::Sink:

```rust use std::io::sink; use leben::Writer;

let mut writer = sink(); let number: i16 = -582; number.leb128_write(&mut writer).unwrap(); ```

Don't forget that std::vec::Vec<u8> implements std::io::Write and [u8] implements std::io::Read:

```rust use leben::{Reader, Writer}; use std::io::Write;

let encoded = [198, 253, 255, 127]; let decoded = 268435142u64;

let value = u64::leb128read(&mut &encoded[..]).unwrap(); asserteq!(value, decoded);

let mut value: Vec = Vec::new(); decoded.leb128write(&mut value).unwrap(); asserteq!(&value[..], &encoded[..]); ```