12 个稳定版本 (4 个主要版本)
5.1.0 | 2022年3月20日 |
---|---|
5.0.0 | 2022年3月12日 |
4.2.0 | 2022年3月12日 |
3.0.0 | 2022年3月6日 |
0.1.0 |
|
#31 in #endianness
每月下载量 52 次
13KB
164 行
此库提供了在字节数组中读取和写入数据的视图。
它还可以在 [no_std]
环境中工作。
默认情况下,此库使用小端作为默认的字节序。但您可以通过在功能标志中使用 BE
(用于大端)或 NE
(用于本地端)来覆盖字节序。
例如,如果您想使用大端:
[dependencies]
data-view = { version = "5", features = ["BE"] }
示例
将此添加到项目的 Cargo.toml
文件中。
[dependencies]
data-view = "5"
DataView
use data_view::DataView;
let mut view = DataView::new([0; 8]);
view.write(12_u16);
view.write(34_u16);
view.write(5678_u32);
view.offset = 0;
assert_eq!(view.read::<u16>(), Some(12));
assert_eq!(view.read::<u16>(), Some(34));
assert_eq!(view.read::<u32>(), Some(5678));
视图
use data_view::View;
let mut buf = [0; 8];
buf.write_at(0, 42_u16);
buf.write_at(2, 123_u32);
assert_eq!(buf.read_at::<u16>(0), Some(42));
assert_eq!(buf.read_at::<u32>(2), Some(123));
替代方案
有许多替代库,
但我不喜欢这些库的 API。它们有大量的读取和写入数据的功能。例如,read_u16
、read_u32
、write_i64
等...
幸运的是,Rust 支持 Generics 函数,这就是这个库存在的原因。