As macros podem corresponder a argumentos constantes em vez de literais?

Considerando aexemplo de correspondência de macro, isso mostra como as macros podem corresponder a um argumento.

Fiz alterações muito pequenas aqui 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);
}

Trabalhos, impressão:mode Y: 3

No entanto, eu gostaria de usar uma constante como argumento, isso pode ser feito para funcionar:

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);
}

Isso é possível no Rust?

Observe que usando ummatch A instrução não é utilizável para mim, pois no meu código cada ramificação é resolvida para diferentes tipos, causando um erro. Então, estou especificamente interessado em saber se uma constante pode ser passada para uma macro.

questionAnswers(2)

yourAnswerToTheQuestion