Noob question, but why does the first example move the value in the vector but the second doesn't?
First:
let mut v = Vec::new();
for i in 101..106 {
v.push(i.to_string());
}
let third = v[2]; // moves
let fifth = v[4]; // moves
Second:
let v2 = vec![1, 2, 3];
let second = v2[1]; // doesn't move