Module rustc::pluginUnstable [-] [+] [src]

Infrastructure for compiler plugins.

Plugins are Rust libraries which extend the behavior of rustc in various ways.

Plugin authors will use the Registry type re-exported by this module, along with its methods. The rest of the module is for use by rustc itself.

To define a plugin, build a dylib crate with a #[plugin_registrar] function:

#![crate_name = "myplugin"]
#![crate_type = "dylib"]
#![feature(plugin_registrar)]

extern crate rustc;

use rustc::plugin::Registry;

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

fn expand_mymacro(...) {  // details elided

WARNING: We currently don't check that the registrar function has the appropriate type!

To use a plugin while compiling another crate:

#![feature(plugin)]
#![plugin(myplugin)]

See the compiler plugin guide for more examples.

Reexports

pub use self::registry::Registry;

Modules

build

Used by rustc when compiling a plugin crate.

load

Used by rustc when loading a plugin.

registry

Used by plugin crates to tell rustc about the plugins they provide.