let mut vec1 = vec![0,0,0,0]; let vec2 = vec![1,3,2,0]; for v in vec2.iter(){ vec1[v] += 1; }
Мой пример не работает. Как правильно изменить значения?
Это запустится и напечатает [1,1,1,1]:
[1,1,1,1]
fn main() { let mut vec1 = vec![0,0,0,0]; let vec2 = vec![1,3,2,0]; for v in vec2.iter(){ vec1[*v] += 1; } dbg!(vec1); }
Площадка
Ваш индекс находится за ссылкой, и он должен иметь тип usize, поэтому убедитесь, что вы его деструктурируете:
usize
for &v in vec2.iter(){ vec1[v] += 1; }
А также, чтобы быть в безопасности, явно приведите v как usize:
v
for &v in vec2.iter(){ vec1[v as usize] += 1; }
Детская площадка .