2 个版本
0.1.1 | 2022 年 8 月 13 日 |
---|---|
0.1.0 | 2022 年 8 月 13 日 |
#468 在 Rust 模式
118,388 每月下载量
在 299 个 包 (10 个直接使用)
14KB
204 行
无需进程宏的十六进制字面量。
此包实现了不使用进程宏的最小化十六进制字面量宏。优点是编译时间更快,可以与不字面量 const 值一起工作,并且更容易审计。然而,由于使用了 const fn
,包有一些限制,这取决于 Rust 版本。
无论如何,结果类型是字节数组 ([u8; N]
),它不会强迫你写出它的长度。这已经非常有用了,因为编译器可以证明长度,并且你可以避免运行时分配。
该包是 no_std
,并且不需要分配器。
用法
只需将一个 &str
常量(通常是一个字面量)传递给十六进制宏。
示例
use hex_lit::hex;
let array = hex!("2a15ff");
assert_eq!(&array, &[42, 21, 255]);
输入不得包含任何空格或其他分隔符,并且它必须具有偶数长度。请注意,您仍然可以使用 concat 宏将长字符串分成块
use hex_lit::hex;
let array = hex!(concat!(
"0000002a000000",
"ffffffffffffff",
));
assert_eq!(&array, &[0, 0, 0, 42, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255]);
依赖于 Rust 版本的功能
- 1.41.1+ - MSRV,const 上下文中的使用是不可能的,只有 hex! 宏可用。
- 1.46.0+ - const 上下文中的使用可用,并且在编译时检查输入的正确性(不考虑 cargo 功能)。
- 1.57+ - 对不良输入有更友好的错误信息(不考虑 cargo 功能)
Cargo 功能
rust_v_1_46
- 承认将 MSRV 提高到 1.46+ 并启用 const 上下文中的使用。
提高 MSRV 是故意明确的。
由于改进了输入检查,建议使用 Rust 1.46+,最好在 CI 中使用 1.57+,即使您的目标 MSRV 较低。
许可证
MITNFA