Rust Book的Operators and Symbols附录列出了两个都是右包含范围的运算符:
操作员 | 例子 | 解释 |
---|---|---|
..= |
..=expr , expr..=expr |
包含右侧的范围字面量 |
... |
expr...expr |
在模式中:包含范围模式 |
这两个运营商有什么区别?或者,换种说法,范围文字和范围模式之间有什么区别?
'In a pattern' 表示expr...expr
必须在匹配表达式中使用,expr..=expr
而不应该使用。为什么是这样?
甲图案是什么,可以用来测试一个值是否一定的形状。甲字面是一块创建一个值的源代码。出于可发现性的目的,一些文字和模式看起来彼此相似,以表明它们之间的关系。
Rust 1.0 允许...
在模式中使用,因此为了向后兼容,今天仍然允许使用该语法:
match 42 {
1...100 => println!("Just right"),
_ => println!("No good"),
}
Run Code Online (Sandbox Code Playgroud)
然而,Rust 1.0 并没有稳定使用...
作为字面量。经过多次自行车修理后,我们认为这..=
是包含范围内更好的语法。该语法在 Rust 1.26 中被稳定为文字,并且它也被添加为模式。
新代码应该更喜欢..=
模式。编译器甚至建议更新...
in 模式的用法:
warning: `...` range patterns are deprecated
--> src/main.rs:3:10
|
3 | 1...100 => println!("Just right"),
| ^^^ help: use `..=` for an inclusive range
|
Run Code Online (Sandbox Code Playgroud)
据建议,这一警告将在2021年版的错误。
可以更新文档以表明..=
也可以在模式中使用并且是...
.
也可以看看: