作者:519cxf | 来源:互联网 | 2022-12-01 17:17
我..=
在一些Rust代码中看到了这个运算符:
for s in 2..=9 {
// some code here
}
它是什么?
1> Lynn..:
这是包容性范围运算符.
该范围x..=y
包含所有的值>= x
和<= y
"而来,即x
达到并包括 y
".
这与非包含范围运算符形成对比x..y
,后者不包括y
其自身.
fn main() {
println!("{:?}", (10..20) .collect::>());
println!("{:?}", (10..=20).collect::>());
}
// 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
作为模式是实验性功能.请参阅问题#37854.
历史
包容性范围过去只是一个实验性的夜间特征,并且...
之前已经编写过.
从Rust 1.26开始,它正式成为该语言的一部分,并编写..=
.
(在包含范围存在之前,你实际上无法创建一系列字节值,包括255u8
.因为它是0..256
,并且256
超出u8
范围!这是问题#23635.)
也可以看看
该锈病1.26发布博客文章的介绍..=
.
StackOverflow:如何在范围中包含结束值?
您可能想要添加一些有关为什么需要这种新语法的详细信息,例如当`n == 255`时,`0u8 ..(n + 1)`和`0u8 .. = n`之间的区别.