我写了以下函数:
fn print_error(text: &str) {
let mut t = term::stdout().unwrap();
t.fg(term::color::RED).unwrap();
(write!(t, text)).unwrap();
assert!(t.reset().unwrap());
}
它应该获取该字符串并将其以红色打印在控制台上。
当我尝试编译时,编译器说:
error: format argument must be a string literal.
--> src/main.rs:4:16
|
4 | (write!(t, text)).unwrap();
| ^^^^
经过大量搜索后,我发现我可以用例如替换文本变量"text"
它会起作用,因为它是一个字符串文字,write!
宏观需求。
我怎样才能使用write!
使用字符串而不是字符串文字的宏?或者有更好的方法来对终端输出进行着色吗?
只需使用write!(t, "{}", text)
.
我认为您错过了错误消息的主旨。write! https://doc.rust-lang.org/std/macro.write.html有两个强制参数:
- 写入的位置。
- 格式字符串。
第二个参数不仅仅是任意字符串,它是格式字符串。
也可以看看:
- 打印!错误:预期文字/格式参数必须是字符串文字 https://stackoverflow.com/q/27734708/155423
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)