为什么在获得向量的所有权后仍可以使用矢量元素而不使用引用?

时间:2018-07-15 01:44:39

标签: rust

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

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

1 个答案:

答案 0 :(得分:6)

您有一个整数(i32 to be specific)向量,并且i32实现了Copy特征。

The index syntax returns a dereferenced value。由于索引类型实现了Copy,因此编译器会隐式复制它。

您完全cannot take ownership of an item from a vector using the indexing syntax

  

使用参考和非参考进行矢量索引编制(除了获取参考之外)有什么区别

在没有&的情况下,将复制该值(但仅因为它实现了Copy)。使用&,您可以引用向量中的值。