这个问题在这里已有答案:
当我读到Rust documentation on generics时,我发现了一个关于所有权的奇怪问题 . 查看以下代码段:
fn main() {
let number_list = vec![34, 50, 25, 100, 65];
let mut largest = number_list[0];
for number in number_list {
if number > largest {
largest = number;
}
}
println!("The largest number is {}", largest);
}
为什么不 largest
取得向量的第一个元素的所有权?我发现在之前的chapter about vectors中,使用借用语法 let largest = &v[0]
将取得该元素的所有权 . 为什么这段代码会通过编译器?
1 回答
许多原始类型实现了the Copy trait - 这意味着当它们将它们绑定到其他变量时它们会被复制 . 复制值时没有所有权问题 .
这仅用于演示目的,并且不会发现它不再有效(因为它没有实现
Copy
):但是,如果你有它实现
Copy
(和Clone
),它将运行正常:You can play with it in the Playground here if you want