$crate
in a macro matcher is the reserved identifier $crate
that doesn't have a way to write it outside of a macro (I think?). That is:
macro_rules! m {
(x) => {
m!($crate:tt)
};
($crate:tt) => ()
}
fn main() {
m!(x); // OK
m!(y); // ERROR
m!($crate:tt); // ERROR
m!(crate:tt); // ERROR
}