范围操作符
代码来自Rust圣经模式匹配
fn main() {
let foo = 'f';
assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));
}
在 Rust 中,'A'..='Z'
这种语法表示一个范围,其中 ..=
是范围操作符。这里的两个点实际上是范围操作符的一部分,它们用来指定一个闭区间范围,也就是包括区间的起始值和结束值。
具体到 'A'..='Z'
,这意味着从字符 'A'
开始,到字符 'Z'
结束的所有字符,包括 'A'
和 'Z'
本身。由于字符在 Rust 中是按照 Unicode 标准编码的,因此这个范围实际上是从 'A'
的 Unicode 码点开始到 'Z'
的 Unicode 码点结束的所有字符。
同样的逻辑也适用于 'a'..='z'
,它表示所有的小写字母。当这两个范围用 |
操作符连接起来时,matches!
宏就会检查 foo
是否落在任何一个范围内,即 foo
是否是一个大写字母或小写字母。
函数解释
此 Rust 函数功能如下:
-
初始化变量:
let foo = 'f';
: 定义一个字符变量foo
并赋值为'f'
。
-
条件匹配检查:
- 使用
matches!
宏来检查foo
是否满足以下条件之一:- 处于
'A'
到'Z'
之间(包括'A'
和'Z'
),即大写字母。 - 处于
'a'
到'z'
之间(包括'a'
和'z'
),即小写字母。
- 处于
- 使用
-
断言执行:
assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));
: 如果foo
的值是字母(大写或小写),则断言成功;否则,程序将因断言失败而终止。
该函数用于验证给定字符是否为英文字母,并在非字母时触发断言错误。