在迭代过程中,变量的所有权可以通过三种方式进行传递:移动(move)、克隆(clone)和借用(borrow)。
fn main() {
let vec = vec![1, 2, 3, 4, 5];
for item in vec {
println!("{}", item);
}
// 这里无法再使用vec,因为vec的所有权已经被转移
}
fn main() {
let vec = vec![1, 2, 3, 4, 5];
for item in vec.clone() {
println!("{}", item);
}
println!("{:?}", vec); // vec仍然有效
}
fn main() {
let vec = vec![1, 2, 3, 4, 5];
for item in &vec {
println!("{}", item);
}
println!("{:?}", vec); // vec仍然有效
}
需要根据具体的需求和情况选择适当的所有权传递方式。移动和克隆会涉及到复制变量的值,可能会有性能开销,而借用则可以避免这种开销,但需要注意借用的生命周期,确保引用有效。