1 个不稳定版本
0.0.1 | 2024 年 3 月 4 日 |
---|
#76 in #endian
用于 heapbuf
105KB
1.5K SLoC
rw-utils
提供各种实用方法的集合,以增强 Rust 的 Read 和 Write 特性,用于读取/写入结构化数据。
实用工具
- 以小端和大端格式读取/写入所有 Rust 整数类型。
- 以小端和大端格式读取/写入所有整数类型的数据结构(vec/slice)。
- 读取/写入任意大小的有符号和无符号 leb128。
- 以各种编码方式读取/写入字符串。
- 特别提到一个用于读取/写入与 Java 的 DataInput/DataOutput readUTF/writeUTF 方法兼容的字符串的方法。
示例
此示例使用 File 实现了 Read 或 Write。您可以使用这些特性的任何实现来完成此操作。 Vec<u8>
/Cursor
/...
use std::io;
use rw_utils::num_read::NumRead;
use rw_utils::num_write::NumWrite;
fn main() -> io::Result<()> {
let mut file = File::create("/tmp/somefile")?;
//Write u16 in little endian
file.write_u16_le(0x4418u16)?;
//Write u16 in big endian
file.write_u16_be(0x4418u16)?;
drop(file);
let mut file = File::open("/tmp/somefile")?;
//Read u16 in little endian
assert_eq!(file.read_u16_le()?, 0x4418u16);
//Read u16 in big endian
assert_eq!(file.read_u16_be()?, 0x4418u16);
return Ok(());
}
Cargo 功能
为了在使用此库时减少二进制文件的大小,默认功能为空。为了让此库发挥作用,您需要添加以下列表中的至少一个功能
- "num_read"
- "num_write"
- "string_read"
- "string_write"
- "leb128_read"
- "leb128_write"
- "to_write"
- "from_read"
如果您想要所有功能,可以添加 "all" 功能。
Cargo.toml
[dependencies]
rw-utils = {version = "*", features = ["all"]}
依赖关系
~0–350KB