Как изменить значение ve c элементов по индексу? - PullRequest
0 голосов
/ 10 июля 2020
let mut vec1 = vec![0,0,0,0];
let vec2 = vec![1,3,2,0];

for v in vec2.iter(){
   vec1[v] += 1;
}

Мой пример не работает. Как правильно изменить значения?

Ответы [ 2 ]

3 голосов
/ 10 июля 2020

Это запустится и напечатает [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);
}

Площадка

3 голосов
/ 10 июля 2020

Ваш индекс находится за ссылкой, и он должен иметь тип usize, поэтому убедитесь, что вы его деструктурируете:

for &v in vec2.iter(){
   vec1[v] += 1;
}

А также, чтобы быть в безопасности, явно приведите v как usize:

for &v in vec2.iter(){
   vec1[v as usize] += 1;
}

Детская площадка .

...