3个不稳定版本
使用旧的Rust 2015
0.2.0 | 2017年8月7日 |
---|---|
0.1.1 | 2017年8月3日 |
0.1.0 | 2017年8月3日 |
在文件系统中排名第1377
每月下载量28次
16KB
156行代码(不包括注释)
Embed-dir for Rust
crate.io包... https://crates.io/crates/embed_dir/0.1.0
您在Rust中拥有强大的宏include_bytes!
但有时这还不够。您可能需要嵌入多个文件,通常在一个文件夹中。
为了自动化这个过程,这个简单的小工具会为您生成代码。
[注意]也许在未来,这个工具可以被集成到编译过程中的build
运行工具
如果您运行程序而没有参数或参数数量不正确
Simple program to generate code to embed files recursivily from a chosen folder.
It will generate a source file with code to embed the files on folder.
More info: https://github.com/jleahred/embed_dir
Usage:
embed_dir <origin-folder> <destiny-file>
where:
origin-folder string is the path to the folder containing the files to embed
destiny-file string is output filename (without .rs extension)
example:
embed_dir src/public src/embed.rs
在自己的项目目录中的示例
cargo run test_folder src/test/pr.rs
生成的代码
这将为每个目录生成一个文件
[source, rust]
// autogenerated embed_dir on ...
macro_rules! gen_get_includes_bytes{
($rel_path:expr, $($file:expr),+) => {
pub fn get(file_name: &str) -> Option<&'static [u8]> {
match file_name {
$(
$file => Some(include_bytes!(concat!($rel_path, $file))),
)+
_ => None,
}
}
}
}
gen_get_includes_bytes!("../../test_folder",
"README.adoc",
"Cargo.toml",
"pr/README.adoc"
);
第一个字符串表示从生成的源文件到文件的相对位置。
[source, rust]
"../../http_static/",
接下来的字符串是包含的文件(它们可以嵌套在文件夹中)。
使用代码
非常简单直接,只需调用创建的模块上的get函数并传递文件名。
[source, rust]
match super::http_static2::get("index.html") {
Some(content) => content,
None => &[] as &'static [u8],
}