Возникли проблемы с доступом к элементам вектора внутри цикла - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь распечатать элементы вектора через println! внутри цикла.

Это ошибка, которую я получаю, не могу понять, что я делаю неправильно. Пожалуйста, сообщите!

error[E0277]: the type `[i32]` cannot be indexed by `i32`
   |
21 |         s = v[outercount];
   |             ^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
   |
   = help: the trait `std::slice::SliceIndex<[i32]>` is not implemented for `i32`
   = note: required because of the requirements on the impl of `std::ops::Index<i32>` for `std::vec::Vec<i32>`
let v = vec![1,4,2,4,1,8];
let mut outercount:i32 = 0;
loop {
    outercount += 1;
    s = v[outercount];
    println!("{}", s);
    if outercount == (v.len() - 1) as i32 { break; }
}

1 Ответ

1 голос
/ 03 декабря 2019

Я столкнулся с подобной проблемой несколько дней назад, но по-другому, когда пытался сделать свою программу сортировки пузырьков ржавчиной. Я надеюсь, что вы получили свой ответ, как я вижу. Я думаю, что вы хотели напечатать вектор синтаксически неверно, вот пример печати вектора в цикле. Надеюсь, это поможет вам.

fn main(){
let v = vec![1,3,5,7,9]; 
for i in v.iter(){ //also for i in &v 
  println!("{:?}",i);
 }
}

Также вы можете использовать

let outercount = v[0]; //rust will automatically infer this as [i32]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...