(初学者的问题)在观察了一些编码示例(来自各种来源)和Cargo Clippy的语法建议之后,我仍然想知道下面的代码块是否只是相同结果的两个替代品,或者实际上做了一些我必须意识到的不同的事情。
fn main() {
let string_1 = "Hello!";
let string_2 = "See you!";
println!("{} {}", string_1, string_2);
}
或者...
fn main() {
let string_1 = "Hello!";
let string_2 = "See you!";
println!("{string_1} {string_2}");
}
如果我使用第一种语法,Cargo Clippy建议我使用第二种语法,但是,如果我编写println!("{} {}", &string_1, &string_2);
,Clippy就不再抱怨了,所以我猜这两个代码块之间的区别与Rust独特的"所有权"概念有关。
所以,我错过了什么吗?
1条答案
按热度按时间lc8prwob1#
它们是相同的(但第二个更新,在Rust 1.58.0中稳定,并且更推荐用于新代码)。
Clippy在引用时不再建议使用第二种形式的原因是它是无效的:只有标识符(裸变量名)可以与内联捕获一起使用。