$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
}