rust中'for'循环的预期行为

rust中'for'循环的预期行为,rust,Rust,我是新手,我对循环的方式有疑问 fn main() { for x in 1 .. 10 { println!("x == {}", x); } } 程序的输出是 x == 1 x == 2 x == 3 x == 4 x == 5 x == 6 x == 7 x == 8 x == 9 我本来希望循环执行并显示x==10,但它在9点停止。 Rust中的x..y语法表示一个范围 Rust中的范围与许多其他语言和库一样,具有唯一的上限: 创建迭代器的最简单方法

我是新手,我对循环的方式有疑问

fn main() {
    for x in 1 .. 10 {
        println!("x == {}", x);
    }
}
程序的输出是

x == 1
x == 2
x == 3
x == 4
x == 5
x == 6
x == 7
x == 8
x == 9
我本来希望循环执行并显示
x==10
,但它在9点停止。
Rust中的
x..y
语法表示一个范围

Rust中的范围与许多其他语言和库一样,具有唯一的上限:

创建迭代器的最简单方法之一是使用范围表示法
a..b
。这将以一步为单位生成从
a
(包含)到
b
(排除)的值


是的,这是意料之中的。使用
创建范围时,结束不包括。


在模式中,您可以使用
来创建包含范围,并且有一个不稳定的功能,允许您使用
。=
来创建包含范围。

这是意料之中的!
0。。10
是一个“独占范围”,意思是它不包含上界。作品中还有一个“包含范围”语法,不包含上界,但尚未发布。正在中跟踪新语法

现在,您可以编写一个以11为上限的独占范围,使循环包含10

fn main() {
    for x in 1..11 {
        println!("x == {}", x);
    }
}
或者从0开始打印
x+1

fn main() {
    for x in 0..10 {
        println!("x == {}", x + 1);
    }
}

上限是独占的,因此它不会出现在输出中。检查文档: