#endianness #byte #order #target #native #storing

lib-endian

处理字节序或获取当前目标字节序时存储值的简单库

1 个不稳定版本

0.1.0 2024年5月4日

#12 in #storing

MIT 许可证

6KB

lib-endian

这是一个在处理字节序或获取当前目标字节序时存储值的简单库。

示例

  • 通过 Endian::NATIVE 获取当前目标的 Endian
use lib_endian::Endian;
const NE: Endian = Endian::NATIVE;
  • 通过 Endian::native_or_reversed(bool) 获取本地 Endian 或反转的 Endian
use lib_endian::Endian;

const REVERSE: bool = true;

const NE_REV: Endian = Endian::native_or_reversed(REVERSE);
assert_eq!(NE_REV, Endian::NATIVE.reverse());

const NE: Endian = Endian::native_or_reversed(!REVERSE);
assert_eq!(NE, Endian::NATIVE);
  • 通过 .reverse()! 反转 Endian
use lib_endian::Endian;

const BE: Endian = Endian::Little.reverse();
let le = !Endian::Big;
assert_eq!(BE, !le);
  • 通过 .is(...)==!= 比较两个 Endian
use lib_endian::Endian;

const BE: Endian = Endian::Big;

const EQ: bool = BE.is(Endian::Big);
const NEQ: bool = !Endian::Little.is(BE);
let eq = Endian::Big == BE;
let neq = BE != Endian::Little;
assert!(EQ & NEQ & eq & neq);

注意

常量表达式 中不能使用 !==!=,因为它们是通过 traits 实现的,而在 Rust 版本 1.78.0 中,它们至少不包含 const fn

因此,在 常量表达式 中,使用 v.reverse() 来替换 !v,使用 a.is(b) 来替换 a==b,使用 !a.is(b) 来替换 a!=b

无运行时依赖