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
另一个问题是除了引用之外,带有引用的矢量索引和非引用的矢量索引有什么区别?
答案 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
)。使用&
,您可以引用向量中的值。