没有实现 `{integer} % &std::ops::Range<{integer}>`

waa*_*dim 2 rust

我理解这个错误,但仍然不知道如何转换iu32/integer.

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

if n % (i as u32) == 0不起作用

帮助:该特征std::ops::Rem<&std::ops::Range<{integer}>>未实现{integer}

edw*_*rdw 8

在您的代码中,[1..10]实际上是一个固定大小的数组,其中一个范围1..10作为其唯一元素。您想要迭代范围本身而不是 1 元素数组:

let n = 2;
for i in 1..10 {
  if n % i == 0 {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)