首页 > 解决方案 > 为什么在不使用引用的情况下获得向量元素的所有权后仍然可以访问它?

问题描述

fn main() {
    let number_list = vec![1, 2, 3, 4, 5];

    let n = number_list[0];
    let r = &number_list[0];

    println!("{} : {} : {} : {}", n, r, number_list[0], &number_list[0]);
}

输出是:

1 : 1 : 1 : 1

另一个问题是除了参考之外,带有参考和非参考的矢量索引有什么区别?

标签: rust

解决方案


你有一个整数向量(i32具体来说),并i32实现了Copy特征。

索引语法返回一个取消引用的值。由于索引类型实现Copy,编译器隐式复制它。

根本无法使用索引语法从向量中获取项目的所有权

除了参考之外,带有参考和非参考的矢量索引有什么区别

如果没有&,则复制该值(但仅因为它实现了Copy)。使用&,您可以引用向量内的值。


推荐阅读