¿Pueden las macros coincidir con argumentos constantes en lugar de literales?

Dado queejemplo de coincidencia macro, esto muestra cómo las macros pueden coincidir con un argumento.

He hecho cambios muy pequeños aquí para usar números:

macro_rules! foo {
    (0 => $e:expr) => (println!("mode X: {}", $e));
    (1 => $e:expr) => (println!("mode Y: {}", $e));
}

fn main() {
    foo!(1 => 3);
}

Obras, impresión:mode Y: 3

Sin embargo, me gustaría usar una constante como argumento, ¿se puede hacer que funcione?

const CONST: usize = 1;

macro_rules! foo {
    (0 => $e:expr) => (println!("mode X: {}", $e));
    (1 => $e:expr) => (println!("mode Y: {}", $e));
}

fn main() {
    foo!(CONST => 3);
}

¿Es esto posible en Rust?

Nota, usando un regularmatch La declaración no es utilizable para mí, ya que en mi código cada rama se resuelve en diferentes tipos, dando un error. Entonces, estoy específicamente interesado en saber si una constante se puede pasar a una macro.