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.