1 个不稳定版本
0.1.0 | 2024年4月7日 |
---|
#544 在 编码
497,872 每月下载量
在 1,031 个 crate 中使用 (2 个直接使用)
145KB
2.5K SLoC
byteorder-lite
这个 crate 是 byteorder
crate 的分支,设置了 #![forbid(unsafe_code)]
。它包含原始 crate 中所有的特性和大多数方法,但必须删除 ReadBytesExt::read_*_into
系列方法,因为它们目前无法在不安全代码的情况下实现。
byteorder-lite
与主要的 byteorder
crate 无关。
lib.rs
:
这个 crate 是 byteorder
crate 的分支,设置了 #![forbid(unsafe_code)]
。它包含原始 crate 中所有的特性和大多数方法,但必须删除 ReadBytesExt::read_*_into
系列方法,因为它们目前无法在不安全代码的情况下实现。
crate 的组织结构非常简单。一个名为 ByteOrder
的特质,指定了 Rust 中每种数字类型的字节转换方法(不包括大小与平台相关的数字,如 usize
和 isize
)。两个类型,BigEndian
和 LittleEndian
实现了这些方法。最后,ReadBytesExt
和 WriteBytesExt
为所有实现 Read
和 Write
的类型提供了便利的方法。
提供了一个别名,NetworkEndian
,用于 BigEndian
,以帮助提高代码的可读性。
还提供了一个额外的别名,NativeEndian
,用于本地平台的字节序。这在需要序列化数据且不希望进行转换时非常有用。
示例
从 Read
类型中读取无符号 16 位大端整数
use std::io::Cursor;
use byteorder_lite::{BigEndian, ReadBytesExt};
let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
// Note that we use type parameters to indicate which kind of byte order
// we want!
assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());
assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());
将无符号 16 位小端整数写入 Write
类型
use byteorder_lite::{LittleEndian, WriteBytesExt};
let mut wtr = vec![];
wtr.write_u16::<LittleEndian>(517).unwrap();
wtr.write_u16::<LittleEndian>(768).unwrap();
assert_eq!(wtr, vec![5, 2, 0, 3]);
可选功能
此 crate 也可以在不使用标准库的情况下使用。
替代方案
标准数值类型提供了内置方法如 to_le_bytes
和 from_le_bytes
,支持一些相同的用例。