2 releases

Uses old Rust 2015

0.1.1 Nov 26, 2016
0.1.0 Nov 26, 2016

#28 in #easy


Used in arthas_plugin

MIT license

11KB
245 lines

ecp

easily build compiler plugins.

Document

Sorry, you need to build the document with cargo doc.

Prerequisites

ecp required latest Nightly Rust.

Why use "compiler plugin" instead of "Macros 1.1"?

I need not only "custom derive", but also more "compiler plugin" features. Currently "Macros 1.1" is also unstable.

Usage

Add dependencies to Cargo.toml

[dependencies]
ecp = "^0.1"

In your main.rs or lib.rs:

#![feature(quote, plugin_registrar, rustc_private)]
extern crate syntax;
extern crate ecp;

Examples

Create a simple macro which prints "Hello world!":

#![feature(quote, plugin_registrar, rustc_private)]
extern crate syntax;
extern crate ecp;
use ecp::prelude::*;

#[plugin_registrar]
pub fn register(reg: &mut Registry) {
    reg.register_macro("test", test);
}

pub fn test(cx: &mut ExtCtxt, _: Span, _: &[TokenTree]) -> Box<MacResult + 'static> {
    MacEager::expr(quote_expr!(cx, println!("Hello world!")))
}

License

ecp is primarily distributed under the terms of the MIT license. See LICENSE for details.

No runtime deps