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
:
use sink;
use Writer;
let mut writer = sink;
let number: i16 = -582;
number.leb128_write.unwrap;
Don't forget that std::vec::Vec<u8>
implements std::io::Write
and [u8]
implements std::io::Read
:
use ;
use Write;
let encoded = ;
let decoded = 268435142u64;
let value = u64 leb128_read.unwrap;
assert_eq!;
let mut value: = Vec new;
decoded.leb128_write.unwrap;
assert_eq!;