Макрос format!
должен знать фактическую строку формата во время компиляции. Это исключает использование переменных и static
с, а также const
с (которые известны во время компиляции, но на более поздней стадии компиляции, чем расширение макроса).
Однако в этом конкретном случае c вы может решить вашу проблему, эмулируя переменную с помощью другого макроса:
macro_rules! test_fmt_str {
() => {
"test: {}"
}
}
fn main() {
let string = format!(test_fmt_str!(), "OK");
println!("{}", string);
}
( Постоянная ссылка на игровую площадку )
Если ваша строка формата на самом деле не известна при компиляции и не может использоваться в таком макросе, тогда вам нужно использовать динамический c шаблонизатор .