这不起作用:
let vectors = vec![1, 2, 3, 4, 5, 6, 7];
for i in vectors {
println!("Element is {}", i);
}
let largest = vectors[0];
错误信息:
error[E0382]: borrow of moved value: `vectors`
--> src/main.rs:8:19
|
2 | let vectors = vec![1, 2, 3, 4, 5, 6, 7];
| ------- move occurs because `vectors` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
3 |
4 | for i in vectors {
| -------
| |
| value moved here
| help: consider borrowing to avoid moving into the for loop: `&vectors`
...
8 | let largest = vectors[0];
| ^^^^^^^ value borrowed here after move
该向量已移至循环中。它的所有权及其各个元素的所有权已永久转移到那里。
但这有效:
let largest = vectors[0];
let largest2 = vectors[0];
我不知道为什么;这vectors[0]
值应该已移至largest
and largest2
然后应该会失败,但事实并非如此。