所以打印vals.len()其实没用,一直都是4
要在for的里面引用vals,就不能让for一开始把vals给move走了,
但是不move走的话,只是ref或者clone的话,vals.len()就会不变,就不需要在for的里面打印。
for val in vals这句为啥会把vals给move走,这里有解释:
https://stackoverflow.com/questions/59123462/why-is-iterating-over-a-collection-via-for-loop-considered-a-move-in-rust
这里还提到如果vals是一个range而非vec的话,需要用&mut,而不是&
https://users.rust-lang.org/t/move-into-for-loop/41339/2
【 在 ilovecpp 的大作中提到: 】
: 你想想send掉一个元素之后,vals里面有一个位置没有元素,是什么状态?
: 显然不可能是合法状态。就像你注释写的一样,vals已经被消费掉了,不能再访问了。
: 1. 你把对vals的访问移到for前面。
: ...................
--
修改:z16166 FROM 114.241.227.*
FROM 114.241.227.*