3 个版本
0.1.2 | 2024年5月12日 |
---|---|
0.1.1 | 2024年5月4日 |
0.1.0 | 2024年4月27日 |
在 编码 中排名第 958
16KB
272 行代码(不包括注释)
rad 套件,用于读写
此套件提供了一种优雅的方式来从您最喜欢的 读取器 中读取字节,并将字节推送到可爱的 写入器。
此套件有三个模块,每个模块对应一种 字节序: be
(大端),le
(小端),和 ne
(原生端序— 任何您的系统所采用的端序)
示例
从 Reader
中读取无符号 16 位大端整数
use raad::be::*; // < note how we specify we want big endian when we import the trait
let mut rdr = &mut &[02, 05, 03, 00][..];
assert_eq!([0x0205, 0x0300], rdr.r::<[u16; 2]>().unwrap());
将无符号 16 位小端整数写入 Writer
use raad::le::*; // and here we specify little endian
let mut wtr = vec![];
wtr.w([0x0205u16, 0x0300]).unwrap();
assert_eq!(wtr, vec![05, 02, 00, 03]);
为什么
这些辅助工具可以极大地提高从文件/… 中读取数字和其他东西的便捷性
看看,要从读取器中读取 3 个 u64,您需要经历所有这些麻烦
use std::io::Read;
fn read3(t: &mut impl Read) -> std::io::Result<[u64; 3]> {
let mut out = [0; 3];
let mut tmp = [0; 8];
for elem in &mut out {
t.read_exact(&mut tmp)?;
*elem = u64::from_ne_bytes(tmp);
}
Ok(out)
}
而使用此套件,它的操作就像这样
use raad::ne::*;
t.read::<[u64; 3]>();