Ну if ты не можешь туда впихнуть, но ты можешь сделать что-то типа
macro_rules! macro {
(5) => {compile_error! ("5 is unacceptable")}
}
https://doc.rust-lang.org/std/macro.compile_error.html
Делать какие-то сложные проверки с условиями ты в декларативных макросах не можешь.
Например ты не можешь вычислить значение выражения. И не можешь убедиться, что это значение константное.
Так что иногда придётся делать динамические проверки, добавляя всякие if-ы и assert-ы