#build-script #cargo-build #compile #helper #hook #processor #process

构建 build_compile

为编译成 Rust 代码的构建脚本提供辅助的 crate

2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2016 年 8 月 17 日
0.1.0 2016 年 4 月 22 日

590构建工具

MIT 许可证

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 中提取。

无运行时依赖