为什么在Rust中允许将向量中的整数值赋值给另一个变量? fn main(){ 让number_list=vec![34,50,25100,65]; 设mut max=number_list[0]; 对于编号列表中的编号{ 如果数字>最大值{ 最大=数量; } } println!(“最大的数字是{}”,最大); 断言(最大,100); }

为什么在Rust中允许将向量中的整数值赋值给另一个变量? fn main(){ 让number_list=vec![34,50,25100,65]; 设mut max=number_list[0]; 对于编号列表中的编号{ 如果数字>最大值{ 最大=数量; } } println!(“最大的数字是{}”,最大); 断言(最大,100); },rust,borrow-checker,Rust,Borrow Checker,数组中第一个元素的所有权不应该被赋予最大值,因此它不应该在循环中使用吗 number\u list是一个整数列表,整数实现了这个特性,这意味着它们永远不会被移动,而是被复制。因此,数组保留其元素的所有权,并且最大的和数量获取这些元素的副本 如果尝试对非复制类型执行相同操作,则会出现错误: struct WrappedInt(i32); fn main() { let number_list = vec![34, 50, 25, 100, 65] .into_iter()

数组中第一个元素的所有权不应该被赋予最大值,因此它不应该在循环中使用吗

number\u list
是一个整数列表,整数实现了这个特性,这意味着它们永远不会被移动,而是被复制。因此,数组保留其元素的所有权,并且
最大的
数量
获取这些元素的副本

如果尝试对非复制类型执行相同操作,则会出现错误:

struct WrappedInt(i32);

fn main() {
    let number_list = vec![34, 50, 25, 100, 65]
        .into_iter()
        .map(|x| WrappedInt(x))
        .collect::<Vec<_>>();

    let mut largest = number_list[0];

    for number in number_list {
        if number.0 > largest.0 {
            largest = number;
        }
    }

    println!("The largest number is {}", largest.0);
    assert_eq!(largest.0, 100);
}
struct-WrappedInt(i32);
fn main(){
让number_list=vec![34,50,25,100,65]
.into_iter()
.map(|x | WrappedInt(x))
收集::();
设mut max=number_list[0];
对于编号列表中的编号{
如果数字.0>最大.0{
最大=数量;
}
}
println!(“最大的数字是{}”,最大的.0);
断言(最大0.100);
}

给出:

错误[E0507]:无法移出'std::vec::vec'的索引`
-->src/main.rs:9:23
|
9 |让mut最大=数字_列表[0];
|                       ^^^^^^^^^^^^^^
|                       |
|发生移动是因为值的类型为'WrappedInt',该类型未实现'Copy'特性
帮助:考虑在这里借用:'No.No.BurnList[ 0 ]

您的问题似乎可以通过的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。