Как зациклить определенное (переменное) количество раз? - PullRequest
2 голосов
/ 03 мая 2019

Этот вопрос может показаться очень простым, но мне трудно понять, как это сделать. У меня есть целое число, и мне нужно использовать цикл для цикла целое число раз.

Сначала я попробовал -

fn main() {
    let number = 10; // Any value is ok
    for num in number {
        println!("success");
    }
}

это печатает ошибку

error[E0277]: `{integer}` is not an iterator
 --> src/main.rs:3:16
  |
3 |     for num in number{
  |                ^^^^^^ `{integer}` is not an iterator
  |
  = help: the trait `std::iter::Iterator` is not implemented for `{integer}`
  = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end`
  = note: required by `std::iter::IntoIterator::into_iter`

Далее я попробовал -

fn main() {
    let number = 10; // Any value is ok
    for num in number.iter() {
        println!("success");
    }
}

компилятор говорит, что нет метода iter для целого числа

error[E0599]: no method named `iter` found for type `{integer}` in the current scope
 --> src/main.rs:3:23
  |
3 |     for num in number.iter() {
  |                       ^^^^

Как я должен это сделать?

1 Ответ

0 голосов
/ 03 мая 2019

Это потому, что вы говорите компилятору для num, содержащегося в number, где number не является итератором и не реализует iter , а не для num в диапазон 0..number, который является итератором.

Документация описывает цикл for следующим образом:

for loop_variable in iterator {
    code()
}

Измените код на:

fn main() {
    let number = 10; 
    for num in 0..number { // change it to get range
        println!("success");
    }
}

Вы также можете изменить его на:

fn main() {
    let number = 10; 
    for num in 1..=number { // inclusive range
        println!("success");
    }
}

Или на:

fn main() {
    let number = 10; 
    for _ in 0..number { // where _ is a "throw away" variable
        println!("success");
    }
}

Также см. для документации

...