I'm struggling to make macros from my rust lib available to other rust projects.
Here's an example of how I'm trying to get this work at the moment.
lib.rs:
#![crate_name = "dsp"]
#![feature(macro_rules, phase)]
#![phase(syntax)]
pub mod macros;
macros.rs:
#![macro_escape]
#[macro_export]
macro_rules! macro(...)
other_project.rs:
#![feature(phase, macro_rules)]
#![phase(syntax, plugin, link)] extern crate dsp;
macro!(...) // error: macro undefined: 'macro!'
Am I on the right track? I've been trying to use std::macros as a reference, but I don't seem to be having much luck. Is there anything obvious that I'm missing?
Your attributes are tangled.
#![…] refers to the outer scope, while #[…] refers to the next item.
Here are some things of note:
In lib.rs, the #![feature(phase)] is unnecessary, and the #![phase(syntax)] is meaningless.
In other_project.rs, your phase attribute is applied to the crate, not to the extern crate dsp; item—this is why it does not load any macros from it. Remove the !.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With