diff options
Diffstat (limited to 'third_party/rust/leb128/README.md')
-rw-r--r-- | third_party/rust/leb128/README.md | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/third_party/rust/leb128/README.md b/third_party/rust/leb128/README.md new file mode 100644 index 0000000000..97e05f9adf --- /dev/null +++ b/third_party/rust/leb128/README.md @@ -0,0 +1,113 @@ +# `leb128` + +[![](https://img.shields.io/crates/v/leb128.svg) ![](https://img.shields.io/crates/d/leb128.png)](https://crates.io/crates/leb128) [![Build Status](https://travis-ci.org/gimli-rs/leb128.png?branch=master)](https://travis-ci.org/gimli-rs/leb128) [![Coverage Status](https://coveralls.io/repos/github/gimli-rs/leb128/badge.svg?branch=master)](https://coveralls.io/github/gimli-rs/leb128?branch=master) + +Read and write DWARF's "Little Endian Base 128" (LEB128) variable length integer +encoding. + +The implementation is a direct translation of the pseudocode in the DWARF 4 +standard's appendix C. + +## Install + +Either + + $ cargo add leb128 + +or add this to your `Cargo.toml`: + + [dependencies] + leb128 = "0.2.1" + +## Example + +```rust +use leb128; + +let mut buf = [0; 1024]; + +// Write to anything that implements `std::io::Write`. +{ + let mut writable = &mut buf[..]; + leb128::write::signed(&mut writable, -12345).expect("Should write number"); +} + +// Read from anything that implements `std::io::Read`. +let mut readable = &buf[..]; +let val = leb128::read::signed(&mut readable).expect("Should read number"); +assert_eq!(val, -12345); +``` + +## Documentation + +[Documentation](https://gimli-rs.github.io/leb128/leb128/index.html) + +## Read-Eval-Print-Loop for LEB128 + +This crate comes with a `leb128-repl` program that you can use after `cargo +install leb128` or by running `cargo run` in clone of this repository. + +``` +$ leb128-repl +LEB128 Read-Eval-Print-Loop! + +Converts numbers to signed and unsigned LEB128 and displays the results in +base-10, hex, and binary. + +> 42 +# unsigned LEB128 +[42] +[2a] +[00101010] + +# signed LEB128 +[42] +[2a] +[00101010] + +> -42 +# unsigned LEB128 +error + +# signed LEB128 +[86] +[56] +[01010110] + +> 9001 +# unsigned LEB128 +[169, 70] +[a9, 46] +[10101001, 01000110] + +# signed LEB128 +[169, 198, 0] +[a9, c6, 0] +[10101001, 11000110, 00000000] + +> -9001 +# unsigned LEB128 +error + +# signed LEB128 +[215, 185, 127] +[d7, b9, 7f] +[11010111, 10111001, 01111111] + +> +``` + +## License + +Licensed under either of + + * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or https://opensource.org/licenses/MIT) + +at your option. + +## Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in the work by you, as defined in the Apache-2.0 license, shall be +dual licensed as above, without any additional terms or conditions. |