【发布时间】:2018-08-30 07:16:03
【问题描述】:
我正在浏览Rust second edition ebook 和链接章节中的一段代码,如果我删除第 3 行中的引用运算符 (&),程序仍然可以正常工作。
let mut s1 = String::from("foo");
let s2 = "bar";
s1.push_str(&s2); // here
println!("s2 is {}", s2);
s2 的值应该按照书中的内容移动。但是,如果我改变了
s1.push_str(&s2);
到
s1.push_str(s2);
以下行应该会触发错误,但不会发生:
println!("s2 is {}", s2);
文档片段:
示例 8-16:在将其内容附加到 细绳 如果 push_str 方法拥有 s2 的所有权,我们将无法在最后一行打印出它的值。然而,这段代码和我们一样工作 期待!
我正在使用 Rust 1.24.1。
【问题讨论】: