Ah, do you mean something like

~~~ .rs
#[macro_export]
macro_rules! foo ( () => (
    #[phase(plugin)] extern crate log;
));
~~~

That's true, this wouldn't work as an exported macro. I hadn't thought of that.

Do you think there is a compelling use case for this pattern or is it an acceptable limitation?  The alternative I guess is to alternate between expansion and plugin loading until a fixed point is reached.