这个问题看起来非常简单,但是我很难弄清楚怎么做,我有一个整数,我需要用一个for循环来循环整数次。
一开始,我试着-
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() {
| ^^^^
我该怎么做?
3条答案
按热度按时间lnxxn5zx1#
Rust for循环接受迭代器(实际上是任何可以是converted into an iterator的东西),唯一的整数不能转换成迭代器,但range可以。
https://play.integer32.com/?version=stable&mode=debug&edition=2018&gist=029803cf8ac6efaa3113b2f32ae6ef0d
bxfogqkk2#
我想与大家分享Rust中这种基于闭包的、受Groovy启发的循环n次的方法。
输出为:
ifmq2ha23#
这是因为您是针对
number
中包含的num
对编译器说的,其中number
不是迭代器,也不实现iter,而不是针对range0..number
中的num
说的,num
是迭代器。文档将
for
循环描述为:将代码更改为:
您也可以将其更改为:
或发送至:
另请参见for documentation