3 个版本

0.1.2 2024年5月12日
0.1.1 2024年5月4日
0.1.0 2024年4月27日

编码 中排名第 958

MIT 许可证

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]>();

无运行时依赖项