#编译时 #文件 # #输入 #include-bytes #数组 #改进

include-bytes-plus

改进的 include_bytes! 允许以不同方式重新解释输入

4个稳定版本

1.1.0 2023年9月22日
1.0.3 2022年2月10日
1.0.1 2022年2月9日
1.0.0 2022年2月3日

#7#include-bytes

每月40次下载
用于 bunk

BSL-1.0 许可证

23KB
386

include-bytes-plus

Crates.io Documentation Build

是Rust的 include_bytes 宏的改进版本,允许将输入重新解释为不同类型的数组。

由于无法在稳定Rust中捕获当前文件路径,此宏仅接受相对于crate根的相对路径。

支持类型

  • 原始固定大小无符号整数,带有可选的字节序后缀;

  • 无符号整数数组;

用法

use include_bytes_plus::include_bytes;

let bytes = include_bytes!("tests/include.in");
let bytes_u16 = include_bytes!("tests/include.in" as u16);
let bytes_u16_2 = include_bytes!("tests/include with whitespaces.in" as u16);
let bytes_u16_3 = include_bytes!("tests/include with whitespaces.in" as [u8; 48]);
let bytes_u16_4 = include_bytes!("tests/include with whitespaces.in" as [u16; 12]);
let bytes_u16be = include_bytes!("tests/include.in" as u16be);

assert_eq!(bytes.len(), bytes_u16.len() * 2);
assert_eq!(bytes.len(), bytes_u16.len() * 2);
assert_eq!(bytes.len(), bytes_u16_2.len() * 2);
assert_eq!(bytes_u16_3.len(), 1);
assert_eq!(bytes_u16_3[0].len(), 48);
assert_eq!(bytes_u16_4.len(), 2);
assert_eq!(bytes_u16_4[0].len(), 12);
assert_eq!(bytes_u16_4[1].len(), 12);
assert_eq!(bytes_u16be.len(), bytes_u16.len());

调试计时

设置环境变量 RUST_INCLUDE_BYTES_LOG=1 以启用每个解析文件的统计信息记录

无运行时依赖