Нет реализации для `{integer}% & std :: ops :: Range <{integer}>` - PullRequest
0 голосов
/ 20 октября 2019

Я понимаю ошибку, но все еще не знаю, как привести i к u32/integer.

let n = 2;
for i in [1..10].into_iter() {
  if n % i == 0 {
    ...
  }
}

if n % (i as u32) == 0 не работает

help: черта std::ops::Rem<&std::ops::Range<{integer}>> не реализована для {integer}

1 Ответ

4 голосов
/ 20 октября 2019

В вашем коде [1..10] на самом деле является массивом фиксированного размера с диапазоном 1..10 в качестве единственного элемента. Вы хотите перебрать сам диапазон, а не этот массив из 1 элемента:

let n = 2;
for i in 1..10 {
  if n % i == 0 {
    ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...