什么是Rust中的.. =(点点等于)运算符?

时间:2018-10-22 15:11:29

标签: syntax rust operators

我在一些Rust代码中看到了这个..=运算符:

for s in 2..=9 {
    // some code here
}

这是什么?

1 个答案:

答案 0 :(得分:24)

这是inclusive range operator

范围x..=y包含所有值>= x<= y,即“从x包括 y

这与非包容性范围运算符x..y相反,后者不包含y本身。

fn main() {
    println!("{:?}", (10..20) .collect::<Vec<_>>());
    println!("{:?}", (10..=20).collect::<Vec<_>>());
}

// Output:
//
//     [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
//     [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

匹配表达式

您还可以在start..=end表达式中将match用作模式,以匹配(包括)范围内的任何值。

match fahrenheit_temperature {
    70..=89  => println!("What lovely weather!"),
    _        => println!("Ugh, I'm staying in."),
}

(将专有范围start..end用作模式是experimental feature。)

历史

包含范围曾经是每晚的实验性功能,并且在...之前写过。

从Rust 1.26开始,它正式成为该语言的一部分,并写成..=

(在包含范围之前,您实际上无法创建包括255u8的字节值范围。因为该范围应为0..256,而256超出范围u8范围!这是issue #23635。)

另请参见