Как я могу отформатировать строку, как это? - PullRequest
1 голос
/ 24 апреля 2020
static TEST: &str = "test: {}";

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

Я хочу создать строку "test: OK", но это не работает. Как мне это сделать?

1 Ответ

6 голосов
/ 24 апреля 2020

Макрос format! должен знать фактическую строку формата во время компиляции. Это исключает использование переменных и static с, а также const с (которые известны во время компиляции, но на более поздней стадии компиляции, чем расширение макроса).

Однако в этом конкретном случае c вы может решить вашу проблему, эмулируя переменную с помощью другого макроса:

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

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

( Постоянная ссылка на игровую площадку )

Если ваша строка формата на самом деле не известна при компиляции и не может использоваться в таком макросе, тогда вам нужно использовать динамический c шаблонизатор .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...