#leb128 #dwarf #webasm #codec #io-write

已删除 leben

LEB128 编码器/解码器

使用旧的 Rust 2015

0.1.0 2018年9月26日

#17#leb128

Apache-2.0

18KB
327 代码行

Build Status Rust Version 1.28+ Crate Docs

Leben 是一个用于编码或解码 LEB128 格式整数的 crate。

这是通过扩展 Rust 原生整数类型来实现的,增加了两个特质

  • Reader(一个关联函数:leb128_read
  • Writer(一个方法:leb128_write

示例

读取和写入可以在任何实现了 std::io::Readstd::io::Write 的值上进行。例如,我们可以写入 std::io::Sink

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

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

别忘了 std::vec::Vec<u8> 实现了 std::io::Write,而 [u8] 实现了 std::io::Read

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

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

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

let mut value: Vec<u8> = Vec::new();
decoded.leb128_write(&mut value).unwrap();
assert_eq!(&value[..], &encoded[..]);

无运行时依赖