翻译时,消息可以采用不同的语言并具有格式参数。我希望能够在模板可以存储在文件中的情况下执行此操作:
static PATTERN: &'static str = r"Hello {inner};";
/// in some implementation
fn any_method(&self) -> String {
format!(PATTERN, inner = "world");
}
Run Code Online (Sandbox Code Playgroud)
使用include_str
自 1.0.0 版本以来标准库中提供的宏,这绝对是可能的,而且很简单。以下示例是使用rustc
1.58.1 进行测试的:
内容src/main.rs
:
println!(include_str!("src/hello-world.tmpl"), "world");
Run Code Online (Sandbox Code Playgroud)
内容src/hello-world.tmpl
Hello {inner}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为在、、 和朋友有机会评估他们的参数include_str
之前将模板文件的内容作为字符串文字注入。仅当您想要包含的格式模板在宏扩展期间可用时,此方法才有效 - 就像您的示例中一样。如果不是,那么您应该考虑其他选项,例如@DK建议的选项。println
format
作为额外的好处:您还可以通过将格式字符串定义为宏,在使用格式字符串的站点以外的源代码位置中定义格式字符串。
归档时间: |
|
查看次数: |
2316 次 |
最近记录: |