ecp

Crates.ioecp
lib.rsecp
version0.1.1
sourcesrc
created_at2016-11-26 13:11:05.831226
updated_at2016-11-26 13:33:02.893628
descriptioneasily build compiler plugins.
homepagehttps://github.com/fengcen/ecp
repositoryhttps://github.com/fengcen/ecp.git
max_upload_size
id7368
size11,245
fvm-crate-owners (github:filecoin-project:fvm-crate-owners)

documentation

README

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.

Commit count: 10

cargo fmt