Reputation: 113
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]);
}
The output is:
1 : 1 : 1 : 1
Another question is what is the difference between vector indexing with a reference and a non-reference except taking the reference?
Upvotes: 2
Views: 745
Reputation: 432139
You have a vector of integers (i32
to be specific), and i32
implements the Copy
trait.
The index syntax returns a dereferenced value. Since the indexed type implements Copy
, the compiler copies it implicitly.
You cannot take ownership of an item from a vector using the indexing syntax at all.
what is the difference between vector indexing with a reference and a non-reference except taking the reference
Without the &
, the value is copied (but only because it implements Copy
). With the &
, you have a reference to the value inside the vector.
Upvotes: 7