@leah thanks, this reference helped me understand Rust's scoping/hygiene rules for macros a lot better!
Unfortunately this requires all the other macros to be #[macro_export]ed as well. bleh. I can live with it I guess.
A bit disappointed that this $crate stuff is necessary at all. Do you know if there's a reason for this "mixed-site hygiene" instead of Scheme-like full hygiene?