这个非常简单的 Rust 程序:
fn main() {
let c = "hello";
println!(c);
}
会抛出以下编译时错误:
error: expected a literal
--> src/main.rs:3:14
|
3 | println!(c);
| ^
在Rust的早期版本中,错误信息为:error: format argument must be a string literal.
println!(c);
^
用以下程序替换原程序:
fn main() {
println!("Hello");
}
正常工作。
我不清楚这个错误的含义,谷歌搜索也没有真正解决它。为什么将c 传递给println!
宏会导致编译时错误?这似乎是相当不寻常的行为。
c = "{}"
并且宏在编译时被解析,那么编译器很难确定是否需要进一步的参数,因此无法保证在编译时进行验证... - evotopiderror!(err)
记录它时,您无法这样做。您必须使用error!("{}", err)
hack。这不是世界末日,但确实是一个轻微的刺激。 :) - marathon