我在一些Rust代码中看到了这个..=
运算符:
for s in 2..=9 {
// some code here
}
这是什么?
答案 0 :(得分:24)
范围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。)