使用旧的 Rust 2015
0.1.0 |
|
---|
#17 在 #leb128
18KB
327 代码行
Leben 是一个用于编码或解码 LEB128 格式整数的 crate。
这是通过扩展 Rust 原生整数类型来实现的,增加了两个特质
Reader
(一个关联函数:leb128_read
)Writer
(一个方法:leb128_write
)
示例
读取和写入可以在任何实现了 std::io::Read
或 std::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[..]);