如何格式化这样的字符串?

How can I format a string like this?

static TEST: &str = "test: {}";

fn main() {
    let string = format!(TEST, "OK");
    println!("{}", string);
}

我想构造字符串 "test: OK",但这不起作用。我该怎么做?

format! 宏需要在编译时知道实际的格式字符串。这不包括使用变量和 statics,但也不包括 consts(在编译时知道,但在比宏扩展更晚的编译阶段)。

但是在这种特定情况下,您可以通过使用另一个宏模拟变量来解决您的问题:

macro_rules! test_fmt_str {
    () => {
        "test: {}"
    }
}

fn main() {
    let string = format!(test_fmt_str!(), "OK");
    println!("{}", string);
}

(Permalink to the playground)

如果您的格式字符串在编译时实际上并不知道并且不能在这样的宏中使用,那么您需要 .