Я вытаскиваю свои волосы из-за попытки получить плагин компилятора Rust для правильной регистрации.Как правильно зарегистрировать плагин компилятора Rust?
У меня есть отдельный ящик под названием rust_to_glsl
, который находится в подкаталоге моего основного кода.
Внутри файла rust_to_glsl/src/lib.rs
У меня есть следующие
#![feature(plugin_registrar)]
#![feature(rustc_private)]
#![crate_type="dylib"]
extern crate rustc;
extern crate syntax;
#[doc(hidden)]
#[plugin_registrar]
pub fn registrar(registry: &mut rustc::plugin::Registry) {
println!("Test");
registry.register_macro("to_glsl", expand);
}
Плюс я определил действительную expand
функцию.
В src/main.rs
Я пытаюсь вытащить этот плагин/ящик.
#![feature(plugin)]
#![plugin(rust_to_glsl)]
И я пытаюсь использовать этот макрос здесь:
fn main() {
let glsl = to_glsl!(
const x: uint = 5;
static texture: &Texture2d = 1;
fn hello() {
min(5, 3 * 1 + 5)
}
);
println!("{}", glsl);
}
Если я компилирую, что я получаю эту ошибку:
Compiling opal v0.1.0 (file:///Users/chris/Code/Rust/gl)
src/main.rs:2:11: 2:23 error: can't find crate for `rust_to_glsl`
src/main.rs:2 #![plugin(rust_to_glsl)]
В процессе сборки я замечаю, что rust_to_glsl
не скомпилирован (с cargo build
).
Если я добавлю в extern crate rust_to_glsl
, тогда он компилирует rust_to_glsl
. Но потом скварки, сказав
49:23 error: macro undefined: 'to_glsl!'
src/main.rs:49 let glsl = to_glsl!(
Я не уверен, если мне нужно use
макрос или если все макросы являются глобальными.