4 个版本
0.2.1 | 2020年6月8日 |
---|---|
0.2.0 | 2020年6月8日 |
0.1.1 | 2020年6月7日 |
0.1.0 | 2020年6月7日 |
#2044 在 Rust 模式
27 每月下载次数
13KB
147 行
proc_use —
proc_use
是一个 Rust 包,用于帮助半动态导入包和模块。所有逻辑都在编译时运行,主要包含在 build.rs
中。
使用场景
在什么情况下这个包有用?比如说你有以下目录结构
project
├─Cargo.toml
├─build.rs
└─src
├─main.rs
├─core
│ └─core.rs
└─util
├─foo.rs
├─bar.rs
└─baz.rs
你经常向 util
添加新文件并将它们包含在 core.rs
中。在纯 Rust 中这样做的方式如下
// main.rs
#[path = "util/foo.rs"]
mod foo;
#[path = "util/bar.rs"]
mod bar;
#[path = "util/baz.rs"]
mod baz;
// core.rs
use foo::*;
use bar::*;
use baz::*;
当然有更干净的方式来避免 #[path]
,但这需要更多的工作。每次添加新的 util 时都需要编辑多个文件。真烦人!这就是 proc_use
出现的地方。上面的可以替换为
// core.rs
include!(concat!(env!("OUT_DIR"), "/proc_use.rs"));
// build.rs
use proc_use::UseBuilder;
use std::env;
use std::path::PathBuf;
fn main() {
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
UseBuilder::new()
.use_glob("src/util/*.rs", "*".into())
.write_to_file_all(out_path.join("proc_use.rs"));
}
这需要更多的初始代码,但现在模块和导入过程是自动的。向 util
添加你想要的任意多的 Rust 文件;use_glob
方法将自动选择并导入所有这些文件。
要查看使用此目录结构的示例,请参阅 globbing。
依赖项
~510KB