Rust从入门到实战系列二百一十九:@ 绑定

本文介绍了Rust编程语言中,如何使用at运算符(@)在match表达式中同时测试值并绑定变量。通过示例展示了如何利用模式匹配功能处理枚举值,确保值的正确范围,并强调了这种功能在数据区分和代码组织中的实用性。
摘要由CSDN通过智能技术生成

at 运算符(@)允许我们在创建一个存放值的变量的同时测试其值是否匹配模式。示例 18-29 展示了一
个例子,这里我们希望测试 Message::Hello 的 id 字段是否位于 3…=7 范围内,同时也希望能将其值绑定到 id_variable 变量中以便此分支相关联的代码可以使用它。可以将 id_variable 命名为 id,与字段同
名,不过出于示例的目的这里选择了不同的名称。

fn main() {

enum Message {
Hello { id: i32 },
}
let msg = Message::Hello { id: 5 };
match msg {
Message::Hello {
id: id_variable @ 3…=7,
} => println!(“Found an id in range: {}”, id_variable),
Message::Hello { id: 10…=12 } => {
println!(“Found an id in another range”)
}
Message::Hello { id } => println!(“Found some other id: {}”, id),
}

}

示例 18-29: 使用 @ 在模式中绑定值的同时测试它
上例会打印出 Found an id in range: 5。通过在 3…=7 之前指定 id_variable @,我们捕获了任何匹配此
范围的值并同时测试其值匹配这个范围模式。
第二个分支只在模式中指定了一个范围,分支相关代码没有一个包含 id 字段实际值的变量。id 字段的值
可以是 10、11 或 12,不过这个模式的代码并不知情也不能使用 id 字段中的值,因为没有将 id 值保存
进一个变量。
最后一个分支指定了一个没有范围的变量,此时确实拥有可以用于分支代码的变量 id,因为这里使用了
结构体字段简写语法。不过此分支中没有像头两个分支那样对 id 字段的值进行测试:任何值都会匹配此
分支。
使用 @ 可以在一个模式中同时测试和保存变量值。
总结
模式是 Rust 中一个很有用的功能,它帮助我们区分不同类型的数据。当用于 match 语句时,Rust 确保
模式会包含每一个可能的值,否则程序将不能编译。let 语句和函数参数的模式使得这些结构更强大,可
以在将值解构为更小部分的同时为变量赋值。可以创建简单或复杂的模式来满足我们的要求。
接下来,在本书倒数第二章中,我们将介绍一些 Rust 众多功能中较为高级的部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值