#embed #static #actix-web #web #proc-macro #include #compile-time

include_dir_as_map

将目录中的文件嵌入 Rust 二进制文件中作为哈希表

2 个稳定版本

1.1.0 2023 年 11 月 25 日
1.0.0 2023 年 9 月 12 日

#1782 in 网页编程

MIT 许可证

5KB

include_dir_as_map

一个过程宏,将目录中的文件嵌入 Rust 二进制文件中作为哈希表。这可以用于嵌入诸如图像、HTML、CSS 和 JS 等资源。

include_dir_as_map 扩展了 include_str!()include_bytes!(),类似于 include_dir

使用方法

Cargo.toml 中包含以下部分

[dependencies]
include_dir_as_map="1"

在您的 Rust 代码中包含以下内容

// DirMap is an alias for HashMap<String, Vec<u8>>
use include_dir_as_map::{include_dir_as_map, DirMap};

// Environment variables will be expanded at compile time
let dirmap: DirMap = include_dir_as_map!("$CARGO_MANIFEST_DIR");
let bytes = dirmap.get("Cargo.toml")?;

所有路径相对于嵌入目录,因此如果 root 包含文件 root/foo.txtroot/next/bar.txt,则 include_dir_as_map!("root") 将生成包含键 foo.txtnext/bar.txt 的哈希表。

功能

默认情况下,文件在调试模式下从文件系统中读取以加快编译速度。要覆盖此行为,请在 Cargo.toml 中启用 always-embed 功能

[dependencies]
include_dir_as_map={ version="1", features=[ "always-embed" ] }

示例

查看 examples/ 目录中的更多示例

开发

构建

要构建库和示例

cargo build --workspace

测试

要测试库和过程宏

cargo test --workspace

依赖项

~83KB