[−][src]Crate varint_rs
Varint is an alternative way of storing integer numbers.
Varints allow for the storage of larger integer types in a smaller amount of
space. It does this by storing an integer using the 7
lower bits and a flag
in the most-significant bit. This flag is set to 1
when more bytes should
be read. The groups of 7
bits are then added from the least-significant
group first.
Features
signed
(default) which allows for signed integers to be encoded, this also enables thezigzag
featurezigzag
(default) which allows for encoding and decoding of signed integers to and from unsigned integersio
(default) which implementsVarintReader
andVarintWriter
onstd::io
Example
// to allow the use of the `VarintWriter::write_*_varint` functions use varint_rs::VarintWriter; // to allow the use of the `VarintReader::read_*_varint` functions use varint_rs::VarintReader; // an example to use for the buffer use std::io::Cursor; // create an i32 set to `300` let number: i32 = 300; // create a buffer for the varint to be writen to // an i32 can be `4` bytes maximum, so we pre-allocate the capacity let mut buffer: Cursor<Vec<u8>> = Cursor::new(Vec::with_capacity(4)); // now we can write the varint into the buffer // `300` should only use `2` bytes instead of all `4` // the `write_*_varint` functions may return an `std::io::Error` buffer.write_i32_varint(number).unwrap(); // we reset the cursor pos back to `0`, this isn't varint stuff buffer.set_position(0); // now we can read the varint from the buffer // we should read `300` which was the number we stored // the `read_*_varint` functions may return an `std::io::Error` let number: i32 = buffer.read_i32_varint().unwrap();
Re-exports
pub use zigzag::Zigzag; |
Modules
zigzag | Zigzag encoding is an alternative way of encoding negative numbers. |
Traits
VarintReader | The |
VarintWriter | The |