2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2016 年 8 月 17 日 |
---|---|
0.1.0 | 2016 年 4 月 22 日 |
590 在 构建工具 中
10KB
194 行
BuildCompile
这是一个小的 crate,允许你将编译到 Rust 的编译器钩子添加到你的 Cargo 构建脚本中。
假设你已经编写了一种可以编译成 Rust 代码的 DSL。现在你想为你的库用户提供一种简单的方式来设置 Cargo 构建脚本。使用 BuildCompile,这就像这样
extern crate build_compile as build;
use std::io::Write;
use std::path::Path;
struct Processor;
impl build::Processor for Processor {
fn process<O: Write>(&self, input: build::FileText, output: &mut O) -> Result<(), build::Error> {
try!(write!(output, "hello"));
Err(build::Error(input, "it's not even implemented yet", build::Span(1, 3)));
}
}
pub fn process_root() {
build::process_root("someextension", &Processor)
}
pub fn process_dir<P: AsRef<Path>>(path: P) {
build::process_dir(path, "someextension", &Processor)
}
在 process
函数内部,你可以做任何你想做的事情。BuildCompile 会为你处理所有目录遍历。它还会为你生成带有高亮错误信息的漂亮错误消息。
现在,你的库用户可以轻松地在自己的 crates 中使用你的处理器
extern crate some_crate;
fn main() {
some_crate::process_root();
}
BuildCompile 由 Niko Matsakis 从 LALRPOP 中提取。